포스트

[R] 데이터 구조 변형

1
2
3
4
5
6
# 사용할 패키지
install.packages("tidyr")
install.packages("reshape2")
library(tidyr)
library(reshape2)
library(dplyr)

사용할 데이터 파일

1
2
3
4
5
> me_m
  이름 국어 영어 수학
1 민수  100   80   72
2 철수   30   50   84
3 수산   40   10   12

넓은 모양을 긴 모양으로

tidyr::gather()

1
2
3
4
5
# gather(데이터, key = "기준 열 이름", "기준열",
#               value = "변환 열 이름", "변환 열")
me_m2 <- me_m |>   # 사용을 위해 변환된 구조를 me_m2로 담음
  gather(key="c_key",
         value = "c_value", "영어", "수학")
1
2
3
4
5
6
7
이름 국어 c_key c_value
1 민수  100  영어      80
2 철수   30  영어      50
3 수산   40  영어      10
4 민수  100  수학      72
5 철수   30  수학      84
6 수산   40  수학      12

reshape2::melt()

1
2
3
4
5
# melt(데이터, id.var = "기준 열", 
#             measure.vas = "변환 열")
me_m |> 
  melt(id.vars = c( "이름", "국어"),      
       measure.vars = c("영어", "수학"))  
1
2
3
4
5
6
7
  이름 국어 variable value
1 민수  100     영어    80
2 철수   30     영어    50
3 수산   40     영어    10
4 민수  100     수학    72
5 철수   30     수학    84
6 수산   40     수학    12

긴 모양을 넓은 모양으로

tidyr::spread()

1
2
3
me_m2 |> 
  spread(key="c_key",
         value="c_value")
1
2
3
4
이름 국어 수학 영어
1 민수  100   72   80
2 수산   40   12   10
3 철수   30   84   50

reshape2::dcast()

1
2
me_m2 |>
  dcast(이름+국어 ~ c_key)
1
2
3
4
이름 국어 수학 영어
1 민수  100   72   80
2 수산   40   12   10
3 철수   30   84   50
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.