변수의 종류

 

자료형

 

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")

 

 

+ Recent posts