유튜브 datasciencelim 님의 R 프로그램 강의 내용을 토대로
통계 프로그램 R의 기초 내용 정리합니다.
데이터 정리를 위한 패키지(tidyr, dplyr) 설치
✔︎ install.packages("tidyr")
✔︎ install.packages("dplyr")
이후에는 아래와 같이 써주면 된다.
✔︎ library(tidyr)
✔︎ library(dplyr)
X <- data.frame (ⓐ=c(1,2,3),
ⓑ=c("a","b","g"), ⓒ=c(30,40,23),
ⓓ=c("d","e","f"), ⓔ=c(44,53,25))
X <- data.frame(family=c(1,2,3),
namef=c("a","b","g"), agef=c(30,40,23),
namem=c("d","e","f"), agem=c(44,53,25))
# 결과
> X
family namef agef namem agem
1 1 a 30 d 44
2 2 b 40 e 53
3 3 g 23 f 25
✔︎ gather(X, key, value, ⓑ:ⓔ)
: X 데이터셋을 key와 value 항목으로
ⓐ기준으로 ⓑ~ⓔ를 세로로 긴 표로 정리
Y <- gather (X, key, value, namef:agem)
# 결과
> Y
family key value
1 1 namef a
2 2 namef b
3 3 namef g
4 1 agef 30
5 2 agef 40
6 3 agef 23
7 1 namem d
8 2 namem e
9 3 namem f
10 1 agem 44
11 2 agem 53
12 3 agem 25
✔︎ separate(Y, key, c("A", "B"), -1)
: Y 데이터셋의 key을 값을 A와 B로 나누는데,
key값의 뒤에서 첫번째 기준으로
Z <- separate (Y, key, c("variable","type"),-1)
# 결과
> Z
family variable type value
1 1 name f a
2 2 name f b
3 3 name f g
4 1 age f 30
5 2 age f 40
6 3 age f 23
7 1 name m d
8 2 name m e
9 3 name m f
10 1 age m 44
11 2 age m 53
12 3 age m 25
✔︎ spread(Z, A, value)
: Z 데이터셋을 분리된 A항목으로 나눠
new <- spread (Z,variable,value)
# 결과
> new
family type age name
1 1 f 30 a
2 1 m 44 d
3 2 f 40 b
4 2 m 53 e
5 3 f 23 g
6 3 m 25 f
✔︎ filter(new, B=="x")
: new 데이터셋에서 B가 x 인 것만 분류
filter(new, type=="f")
# 결과
family type age name
1 1 f 30 a
2 2 f 40 b
3 3 f 23 g
✔︎ filter(new, age>=40)
: new 데이터셋에서 age가 40 이상인 것만 분류
filter(new, age>=40)
# 결과
family type age name
1 1 m 44 d
2 2 f 40 b
3 2 m 53 e
매번 새로운 데이터셋 정의하는 것이 귀찮으므로
pipeline (%>%) 사용 (위부터 순차적으로 진행)
X
new <- X %>%
gather(key, value, ⓑ:ⓔ) %>%
separate(key, c("A", "B"), -1) %>%
spread(A, value)
new2 <- member %>%
gather (key, value, namef:agem) %>%
separate (key, c("variable","type"),-1) %>%
spread (variable,value)
# 결과
> new2
family type age name
1 1 f 30 a
2 1 m 44 d
3 2 f 40 b
4 2 m 53 e
5 3 f 23 g
6 3 m 25 f