[R Programming] R 기본 객체와 자료 형태 (2)
R 기본 객체와 자료 형태 (1)
5가지 기본 객체
- Character (문자형)
- Numeric (real numbers) (숫자형, 실수형)
- Integer (정수형)
- Complex (복소수형)
- Logical (True/False) (논리형)
R에서의 자료 형태
- Vector (벡터)
- Matrix (메트릭스 = 행렬)
- List (리스트)
- Factor (범주형)
- Data Frame (데이터 프레임)
리스트 (List)
리스트 (Lists) 생성하기
- 다른 객체들로 구성된 특별한 형태의 벡터
- 리스트 생성하기
x <- list(1, "a", TRUE, 1 + 4i)
## [[1]]
## [1] 1
## [[2]]
## [1] "a"
## [[3]]
## [1] TRUE
## [[4]]
## [1] 1+4i
실습 - 리스트 (Lists)
- 리스트를 생성하기
Hong <- list(kor.name="홍길동",
eng.name="Gil-dong",
age=43,
married=T,
no.child=2,
child.ages=c(13, 10)
- 객체의 자료구조를 요약해서 보여줌
str(Hong)
## List of 6
## $ kor.name : chr "홍길동"
## $ eng.name : chr "Gil-Dong"
## $ age : num 43
## $ married : logi TRUE
## $ no.child : num 2
## $ child.ages: num [1:2] 13 10
실습 - 리스트 성분 인덱싱
- 리스트 성분들을 추출하기
Hong$age
## [1] 43
Hong["age"]
## $age
## [1] 43
Hong$child.age[2]
## [1] 10
- 리스트의 각 성분에 접근하기
Hong[[2]]
## [1] "Gil-dong"
Hong[c(1,2)]
## $kor.name
## [1] "홍길동"
## $eng.name
## [1] "Gil-dong"
Hong[[6]]
## [1] 13 10
Hong[[6]][1]
## [1] 13
Hong[[6]][2]
## [1] 10
실습 - 리스트 (Lists)
x <- list(a = 1:10,
beta = exp(-3:3),
logic = c(TRUE,FALSE,FALSE,TRUE))
x
## $a
## [1] 1 2 3 4 5 6 7 8 9 10
##
## $beta
## [1] 0.04978707 0.13533528 0.36787944 1.00000000 2.71828183 7.3890
## [7] 20.08553692
##
## $logic
## [1] TRUE FALSE FALSE TRUE
- 각 성분에 대해 같은 함수를 반복적으로 적용한 값을 리턴하기
lapply(x, mean) # x 의 각 성분의 평균값을 계산
## $a
## [1] 5.5
##
## $beta
## [1] 4.535125
##
## $logic
## [1] 0.5
lapply(x, quantile, probs = (1:3)/4) # x 의 각 성분의 사분위수를 계산
## $a
## 25% 50% 75%
## 3.25 5.50 7.75
##
## $beta
## 25% 50% 75%
## 0.2516074 1.0000000 5.0536690
##
## $logic
## 25% 50% 75%
## 0.0 0.5 1.0
범주형 데이터 (Factors)
- 범주형 데이터를 표현하는 데이터 형태
- Using factors with labels is better than using integers → “self-describing”
- Having a variable that has values “Male” and “Female” is better than a variable that has values 1 and 2.
- ex) 남/녀, 매우좋음/좋음/보통/나쁨/매우나쁨, 혈액형, 지역구 …
- 범주형 데이터 생성하기
x <- factor(c("yes", "yes", "no", "yes", "no"))
x ## Levels are put in alphabetical order
- The order of the levels of a factor can be set using the levels argument to factor().
x <- factor(c("yes", "yes", "no", "yes", "no"),
levels = c("yes", "no"))
x
- table() 함수: 도수분포표를 작성해주는 함수
blood.type <- factor(c("A", "A", "AB", "O", "O"), levels=c("A", "B", "AB", "O"))
table(blood.type)
## blood.type
## A B AB O
## 2 0 1 2
데이터 프레임 (Data Frame)
- R 에서 사용하는 데이터 저장 방식 중 가장 널리 사용되는 방식
- 표 형태로 되어 있는 데이터 형태
-
같은 길이의 벡터들을 성분으로 갖는 리스트
- 데이터 프레임 생성하기
x <- data.frame(id = 1:4, name = c("Kim", "Lee", "Park", "Choi"))
x
## id name
## 1 1 Kim
## 2 2 Lee
## 3 3 Park
## 4 4 Choi
실습 - 데이터 프레임 (Data Frames)
- 데이터 프레임 생성하기
x <- c(100, 75, 80)
y <- c("A302043", "A302044", "A302045")
z <- data.frame(score=x, ID=y)
dat.1 <- data.frame(x=1:3, y=c('a', 'b', 'c')
str(dat.1)
## 'data.frame': 3 obs. of 2 variables:
## $ x: int 1 2 3
## $ y: Factor w/ 3 levels "a","b","c": 1 2 3
dat.2 <- data.frame(x=1:3, y=c('a', 'b', 'c'), stringsAsFactors=F)
str(dat.2)
## 'data.frame': 3 obs. of 2 variables:
## $ x: int 1 2 3
## $ y: chr "a" "b" "c"
- 여러 개의 데이터프레임을 행방향으로 붙여 새로운 데이터프레임 생성하기
a <- data.frame(x=c(5, 10, 15), y=c("a", "b", "c"))
b <- data.frame(z=c(10, 20, 30))
cbind(a, b)
## x y z
## 1 5 a 10
## 2 10 b 20
## 3 15 c 30
- 여러 개의 데이터프레임을 열방향으로 붙여 새로운 데이터프레임 생성하기
a1 <- data.frame(x=c(20, 25, 30), y=c("d", "e", "f"))
rbind(a, a1)
## x y
## 1 5 a
## 2 10 b
## 3 15 c
## 4 20 d
## 5 25 e
## 6 30 f
댓글남기기