본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 155. 데이터프레임의 여러 열을 합쳐서 변수와 값으로 만들기 (melt)

by 만다린망고 2023. 4. 15.
반응형

데이터프레임의 여러 열을 합쳐서 변수와 값으로 만드는 방법을 알아봅시다. 말이 좀 어렵죠? 그림으로도 준비했습니다. 

 

 

왼쪽 데이터는 다섯 학생의 성별과 시험성적입니다. 네 과목의 시험성적인데요. 오른쪽 처럼 과목이라는 열과 점수라는 열로 바꿔보겠습니다. 오른쪽 처럼 바꾸면 데이터를 다루기가 편해집니다. 

 

먼저 패키지를 하나 설치하고 불러옵시다. reshape2 라는 패키지입니다. 이 패키지 안에 있는 melt 함수를 사용할 겁니다. 

 

#패키지 설치
install.packages("reshape2")
#패키지 불러오기
library(reshape2)

 

아래와 같이 데이터를 입력합시다. 

 

ID=c(1,2,3,4,5)
SEX=c('M','M','F','F','F')
ENG=c(65,55,45,95,78)
MATH=c(89,88,87,46,65)
CHEMISTRY=c(75,58,58,96,32)
PHYSICS=c(58,70,100,99,87)

df=data.frame(ID,SEX,ENG,MATH,CHEMISTRY,PHYSICS)

 

ID와 SEX는 그대로 구도, 나머지를 변형할 것입니다. melt 함수를 아래와 같이 사용합니다. 

 

df_melt=melt(df,id.vars=c('ID','SEX'))

 

결과는 아래와 같습니다. 

 

> df_melt
   ID SEX  variable value
1   1   M       ENG    65
2   2   M       ENG    55
3   3   F       ENG    45
4   4   F       ENG    95
5   5   F       ENG    78
6   1   M      MATH    89
7   2   M      MATH    88
8   3   F      MATH    87
9   4   F      MATH    46
10  5   F      MATH    65
11  1   M CHEMISTRY    75
12  2   M CHEMISTRY    58
13  3   F CHEMISTRY    58
14  4   F CHEMISTRY    96
15  5   F CHEMISTRY    32
16  1   M   PHYSICS    58
17  2   M   PHYSICS    70
18  3   F   PHYSICS   100
19  4   F   PHYSICS    99
20  5   F   PHYSICS    87

 

이렇게 바꾸면 뭐가 좋냐구요? 대표적인 예는 아래와 같습니다. 이런 모형식을 사용할 수 있습니다. 

 

boxplot(value~variable,df_melt)

 

 

 

 

반응형

댓글