변수의 종류
자료형
1. 숫자형 (numeric)
정수(integer)와, 소수점까지 표현 가능한 실수(double),
허수까지 포함하는 복소수(complex)로 나누어 집니다.
하지만 R에서는 실수와 정수를 나눠서 분석하거나 다루지 않습니다.
num.a <- 100
num.b <- 200
num.c <- 300
# class 함수 : 변수들의 속성(자료형)을 확인합니다.
class(num.a)
# str 함수 : 자료형 및 자료 구성요소를 확인합니다
str(num.a)
2. 논리형(logical)
논리형 변수는 참, 아니면 거짓, 두개의 값만을 가집니다.
R에서 데이터 분석을 할 때 필수적으로 알아야하는 자료형 중에 하나이며,
많이 쓰이는 자료형입니다. 표현 방법은 TRUE,FALSE 또는 T,F가 있습니다.
logic.b1 <- TRUE
logic.b2 <- FALSE
logic.b3 <- T
logic.b4 <- F
3. 문자형(Character)
문자형은 작은 따옴표('')나 큰 따옴표("")로 저장합니다.
두 표시는 동일한 의미를 가지며 문자열을 저장할 수 있습니다.
char1 <- "R"char1 <- "R"
char2 <- 'Programming'
char3 <- "10"
char4 <- '5'
* 문자형 변수는 산술연산이 불가능 합니다.
4. 팩터형(factor)
통계학에서 명목형/순서형 변수와 굉장히 닮은 자료형입니다.
팩터형이란, 수치로서 어떤 의미를 갖는것이 아닌,
범주(category)를 나누기 위한 형태들을 의미 합니다.
factor <- c("대한민국", "미국", "영국", "중국", "프랑스", "대한민국", "필리핀", "중국" )
# as.factor 함수 : 단순 문자형을 factor형 변수로 변환합니다
factor <- as.factor(factor) * 중복된 문자열을 없애줍니다, 카테고리형식으로 변경!
factor * 이때 나오는 levels는 어떤 종류의 범주들이 있는지 나타내는 키워드
# 단일값(Scalar) : 단 하나의 값을 저장합니다
# 벡터(Vector) : 두 개 이상의 값을 가지고 있는 변수입니다.
스칼라와 다른점은 값이 나열되어 있다는 점이며, 한가지의 자료형만 가질 수 있습니다.
# c 함수 : 데이터나 객채들을 하나로 결합하여 저장하는 함수 입니다.
vec.a <- c(1,2,3,4,5)
vec.b <- c(1:5) * 연속되는 값을 넣을 경우 " : "을 이용해서 시작값 : 종료값 형식으로
1씩 증가하는 연속된 값을 저장할 수 있습니다.
vec.c <- c("대한민국", "영국", "미국", "프랑스")
vec.d <- c(T,F, TRUE, FALSE)
vec.e <- c(1000, TRUE, 10) * 자료형이 섞여 있는 경우 자료형의 우선순위에 따라
자료가 변경됩니다.
vec.f <- c(1000, TRUE, "상준") * 논리형 < 숫자형 < 문자형
# seq 함수 : 변수에 여러개의 값을 저장할 수 있습니다
seq(시작값, 종료값, [by = 증가값]) * 증가값을 생략하면 1로 기본값을 설정합니다. 대괄호 생략가능
vec.g <- seq(1,10) # c(1:10)
vec.h <- seq(1, 10, by=2)
* 벡터의 연산
여러개의 값을 기억하는 벡터에 숫자를 연산하면 모든 값에 연산됩니다.
vec.i <- vec.g + 5
여러개의 값을 기억하는 벡터에 벡터끼리 연산하면 같은 위치의 값과 연산됩니다.
단, 여러개의 값을 기억하는 벡터끼리의 연산은 값의 개수가 같아야합니다.
vec.g + vec.i
만약 저장된 값의 개수가 다를 경우 값의 개수가 적은 쪽의 값이 처음부터 반복되어 연산됩니다.
vec.g + vec.b
* 벡터의 요소 접근
vec.j <- c(50, 90 , 70 , 60 ,45 ,35 ,15 ,100 , 80, 85)
vec.j[1] * 벡터의 첫번째 요소 선택
vec.j[7]
vec.j[1:5] * 벡터의 첫번째 요소부터 다섯번째 요소까지 선택
vec.j[-8] * 여덟번째 요소만 제외하고 선택
vec.j[-1:-3] * 첫번째 요소부터 세번째 요소까지를 제외한 나머지 요소만 선택
vec.j[3:1] * 세번째 요소부터 첫번째 요소까지 역순으로 선택
# rep 함수 : 특정요소를 반복하여 선택합니다.
rep(1,5) * 1 을 다섯 번 반복합니다 1 1 1 1 1
rep(vec.i, 2) * vec.i 를 두 번 반복합니다
rep(1:3, each = 2) * 1부터 3까지 두 번 반복합니다 1 1 2 2 3 3
# max 함수 : 최대값을 선택합니다.
# min 함수 : 최소값을 선택합니다.
# mean 함수 : 평균을 계산합니다.
# sum 함수 : 총합을 계산합니다.
max(vec.j) # 100
min(vec.j) # 15
mean(vec.j) # 63
sum(vec.j) #630
예제 1
1) 1부터 10 사이의 벡터를 만들어 v1이라는 변수에 저장합니다.
v1 <- c(1:10)
2) 각 원소 값들에 2를 곱한 결과로 벡터 v2를 만듭니다
v2 <- c(1:10) * 2
3) v2에서 최대값을 뽑아 max_v에 저장합니다
max_v <- max(v2)
4) v2에서 최소값을 뽑아 min_v에 저장합니다
min_v <- min(v2)
5) v2에서 평균값을 뽑아 avg_v에 저장합니다
avg_v <- mean(v2)
6) v2에서 합을 뽑아 sum_v에 저장합니다
sum_v <- sum(v2)
7) v2에서 5번째 요소를 제외하고 v3라는 변수에 저장합니다
v3 <- v1[-5]
8) 화면에 v1, v2, v3, max_v, min_v, avg_v, sum_v를 출력합니다
v1; v2; v3; max_v; min_v; avg_v; sum_v
예제 2
1) seq() 또는 rep() 함수를 이용하여 아래 결과가 나오도록 출력합니다.
# 1, 3, 5, 7, 9
seq(1, 9, 2) / seq(1, 9, by=2)
# 1, 1, 1, 1, 1
rep(1, 5)
# 1, 2, 3, 1, 2, 3, 1, 2, 3
rep(1:3, 3)
# 1, 1, 2, 2, 3, 3, 4 ,4
rep(1:4, each = 2)
산술 연산자
+(더하기), -(빼기), *(곱하기), /(나누기), **(거듭제곱), ^(거듭제곱), %%(나머지)
할당 연산자
<- , =, ->
비교 연산자 (두 개 값에 대한 비교로 참인 경우 TRUE, 거짓인 경우 FALSE를 반환)
>, <, >=, <=, ==(같다), !=(같지않다), !(부정)
논리 연산자
& : 두 식의 값이 모두 TRUE인 경우 TRUE 값을 리턴하는 연산자입니다. (and)
| : 두 식의 값 중 TRUE가 있으면 TRUE값을 리턴하는 연산자입니다. (or)
행렬 (Matrix) : 2 차원
1열 2열 3열
1행 1 4 7
2행 2 5 8
3행 3 6 9
# matrix 함수 : 행렬 데이터를 만듭니다.
행과 열을 지정하지 않으면 12행 1열인 matrix가 만들어 집니다.
mat.a <- matrix(c(1:12))
mat.b <- matrix(c(1:12), ncol=4) * ncol 옵션으로 4열의 값을 저장하는 matrix가 생성
mat.c <- matrix(c(1:12), nrow=4) * nrow 옵션으로 4행의 값을 저장하는 matrix가 생성
mat.d <- matrix(c(1:12), nrow=4, byrow = T) * matrix는 값이 채워지는 방향이 열방향을 우선으로
채워지게 됩니다. byrow = T 옵션을 사용하면 행 방향으로 채워지게 됩니다
* 행렬의 요소 접근
mat.d[7] # matrix에서 지정된 위치의 값을 한 개 선택합니다. -> 열 우선 방식
mat.d[1,] # matrix에서 지정된 행 전체를 선택
mat.d[,1] # matrix에서 지정된 열 전체를 선택
mat.d[3,1] # 지정된 위치 (3행, 1열)의 값을 한개 선택
mat.d[1:2,] # 지정된 범위의 행 값을 선택 -> 값이 연속될 때
mat.d[c(1,3),] # 지정된 범위의 행 값을 선택 -> 값이 연속되지 않을 때
mat.d[-1,] # 1행을 제외한 값을 선택
mat.d[,-2] # 2열을 제외한 값을 선택
mat.d[-c(1:2),] # 1행부터 2행을 제외한 값을 선택
# cbind 함수 : 열 중심으로 벡터값을 행렬로 만들어 줍니다.
vec01 <- c(1, 2, 3, 4, 5)
vec02 <- c(2, 4, 6, 8, 10)
vec03 <- c(3, 6, 9, 12, 15)
mat.e <- cbind(vec01, vec02, vec03)
# rbind 함수 : 행 중심으로 벡터값을 행렬로 만들어 줍니다.
mat.f <- rbind(vec01,vec02,vec03)
# names 함수 : 벡터값에 제목(열이름)을 붙여줍니다
vec <- c(1:3)
names(vec04) <- c("1번","2번","3번")
names(vec04( <- LETTERS[1:3] *알파벳 순으로 제목을 붙여줍니다.
# colnames 함수 : 행렬에서 열의 이름을 붙여 줍니다.
colnames(mat.f) <- c("1번", "2번", "3번", "4번", "5번")
# rownames 함수 : 행렬에서 행의 이름을 붙여줍니다.
rownames(mat.f) <- c("1행", "2행", "3행")
예제 3. 1부터 10까지 출력하는데 3씩 증가 되는 형태로 (1 4 7 10) 저장되는
벡터를 정의하여 v3변수에 저장합니다. (단, 각각 값마다 "A", "B", "C", "D" 라는 이름을 부여합니다.)
v3 <- seq(1,10,3)
names(v3) <- LETTERS[1:4]
예제 4-1. 다음과 같이 값이 구성되는 매트릭스를 정의하여 m1에 저장합니다.
1,2,3의 벡터 n1 ,4,5,6의 벡터 n2 ,7,8,9의 벡터를 n3을 이용하여 matrix를 구성합니다
,1 ,2 ,3
1, 1 4 7
2, 2 5 8
3, 3 6 9
n1 <- c(1,2,3)
n2 <- c(4,5,6)
n3 <- c(7,8,9)
m1 <- cbind(n1,n2,n3)
예제 4-2. 다음과 같이 값이 구성되는 매트릭스를 정의하여 m2에 저장합니다.
1~9의 벡터를 이용하여 matrix를 생성합니다.
,1 ,2 ,3
1, 1 2 3
2, 4 5 6
3, 7 8 9
m2 <- rbind(n1,n2,n3)
m2
예제 4-3. m2를 가지고 아래와 같이 값이 구성되는 매트릭스를 정의하여 m3에 저장합니다.
col1 col2 col3
row1, 1 2 3
row2, 4 5 6
row3, 7 8 9
m3 <- rbind(n1,n2,n3)
colnames(m3) <- c("col1","col2","col3")
rownames(m3) <- c("row1",'row2","row3")
'프로그래밍 공부 > R' 카테고리의 다른 글
R 공부 Day 5 데이터 전처리, %>% 파이프 연산자, 데이터 정제 (0) | 2020.05.28 |
---|---|
R 공부 Day 4 java JDK 설치, 파생변수 만들기 (0) | 2020.05.28 |
R 공부 Day 3 Data frame과 액셀 파일 불러오기 (0) | 2020.05.26 |