티스토리 뷰
reshape2
cast Long Format to Wide Format melt Wide Format to Long Format
옆으로 길게 나열되어있는(wide format) 데이터를 아래로 길게 이어는(long format) 데이터로 바꿔주는 melt 함수의 사용법에 대해 보겠습니다.
우선 reshape2 패키지를 설치하고 불러와주세요.
> install.packages(reshape2)
> library(reshape2)
그리고 연습에 이용할 간단한 데이터를 만들어주었습니다. 간단한 데이터 셋을 이용해 전체적인 큰 틀을 이해하고 나면, 그 다음에 R에서 제공해주는 다양한 데이터 셋에 적용해 연습해보시기 바랍니다.
> section <- c('section-1', 'section-2', 'section-3')
> year <- c(1999,2004,2020)
> sample_1 <- round(rnorm(3, 5, 10))
> sample_2 <- round(rnorm(3, 5, 10))
> sample_3 <- round(rnorm(3, 5, 10))
> sample_4 <- round(rnorm(3, 5, 10))
간단한 데이터를 이용한 melt 함수 적용
4개의 sample별로 value 값을 가지는 간단한 데이터 셋을 만들어주었습니다. 지금 이 데이터는 옆으로 각 sample이 나열되어있는 wide format입니다.
> data <- data.frame(sample_1, sample_2, sample_3, sample_4)
> data
sample_1 sample_2 sample_3 sample_4
1 -9 3 4 2
2 10 -3 -2 6
3 1 -9 14 12
이 데이터 셋에 melt 를 적용하면 다음과 같은 long format 데이터를 얻을 수 있습니다.
> data_melt <- melt(data)
No id variables; using all as measure variables
> data_melt
variable value
1 sample_1 -9
2 sample_1 10
3 sample_1 1
4 sample_2 3
5 sample_2 -3
6 sample_2 -9
7 sample_3 4
8 sample_3 -2
9 sample_3 14
10 sample_4 2
11 sample_4 6
12 sample_4 12
melt 함수의 응용 1: 변수 1개 추가
기존에 이용한 데이터에 section 변수를 추가한 데이터 셋을 만들어주었습니다. 역시 이 데이터도 옆으로 각 sample이 나열되어있는 wide format입니다.
> data <- data.frame(section, sample_1, sample_2, sample_3, sample_4)
> data
section sample_1 sample_2 sample_3 sample_4
1 section-1 -9 3 4 2
2 section-2 10 -3 -2 6
3 section-3 1 -9 14 12
이제는 Section 이라는 변수가 생겼으니 해당변수에 대한 정보를 melt 함수에 입력해주어야 합니다. 이때는 id.vars 를 이용하면 됩니다. 그러면 variable과 value값에 대한 long format 결과를 확인할 수 있습니다.
> data_melt <- melt(data,
+ id.vars=c('section'))
> data_melt
section variable value
1 section-1 sample_1 -9
2 section-2 sample_1 10
3 section-3 sample_1 1
4 section-1 sample_2 3
5 section-2 sample_2 -3
6 section-3 sample_2 -9
7 section-1 sample_3 4
8 section-2 sample_3 -2
9 section-3 sample_3 14
10 section-1 sample_4 2
11 section-2 sample_4 6
12 section-3 sample_4 12
여기서 자동으로 열 이름에 variable, value이 할당이 되는데요, 이를 수정해줄 수 있습니다. variable.name value.name을 이용하면 됩니다.
> data_melt <- melt(data,
+ id.vars=c('section'),
+ variable.name="sample",
+ value.name='value')
> data_melt
section sample value
1 section-1 sample_1 -9
2 section-2 sample_1 10
3 section-3 sample_1 1
4 section-1 sample_2 3
5 section-2 sample_2 -3
6 section-3 sample_2 -9
7 section-1 sample_3 4
8 section-2 sample_3 -2
9 section-3 sample_3 14
10 section-1 sample_4 2
11 section-2 sample_4 6
12 section-3 sample_4 12
melt 함수의 응용 2: 변수 2개 추가
기존에 이용한 데이터에 section과 year 변수 2개를 추가한 데이터 셋을 만들어주었습니다. 역시 이 데이터도 옆으로 각 sample이 나열되어있는 wide format입니다.
> data <- data.frame(section, year, sample_1, sample_2, sample_3, sample_4)
> data
section year sample_1 sample_2 sample_3 sample_4
1 section-1 1999 -9 3 4 2
2 section-2 2004 10 -3 -2 6
3 section-3 2020 1 -9 14 12
변수가 두가지일때에도 다음과 같이 변수에 대한 정보를 melt 함수에 입력해주면 됩니다. 이때는 id.vars 를 이용하면 됩니다. 그러면 variable과 value값에 대한 long format 결과를 확인할 수 있습니다.
> data_melt <- melt(data,
+ id.vars=c('section', 'year'))
> data_melt
section year variable value
1 section-1 1999 sample_1 -9
2 section-2 2004 sample_1 10
3 section-3 2020 sample_1 1
4 section-1 1999 sample_2 3
5 section-2 2004 sample_2 -3
6 section-3 2020 sample_2 -9
7 section-1 1999 sample_3 4
8 section-2 2004 sample_3 -2
9 section-3 2020 sample_3 14
10 section-1 1999 sample_4 2
11 section-2 2004 sample_4 6
12 section-3 2020 sample_4 12
여기서도 variable.name value.name을 이용해서 열이름을 수정하면 이용하면 됩니다.
> data_melt <- melt(data,
+ id.vars=c('section', 'year'),
+ variable.name="sample",
+ value.name='value')
> data_melt
section year sample value
1 section-1 1999 sample_1 -9
2 section-2 2004 sample_1 10
3 section-3 2020 sample_1 1
4 section-1 1999 sample_2 3
5 section-2 2004 sample_2 -3
6 section-3 2020 sample_2 -9
7 section-1 1999 sample_3 4
8 section-2 2004 sample_3 -2
9 section-3 2020 sample_3 14
10 section-1 1999 sample_4 2
11 section-2 2004 sample_4 6
12 section-3 2020 sample_4 12
'R' 카테고리의 다른 글
R | Correlation 그리는 세가지 방법 - pairs(), ggpairs(), corrplot() (0) | 2020.03.23 |
---|---|
R | 히스토그램 그리기, hist() (0) | 2020.03.03 |
R | reshape2의 cast()를 이용한 데이터 재구조화 (1) | 2020.02.05 |
R | 연결된 선이 있는 Bar Plot 그리기(2 samples) (0) | 2020.01.31 |
R | 동일한 데이터로 8가지 기본 그래프 그리기 (ggplot) (0) | 2020.01.31 |
- Total
- Today
- Yesterday
- plot
- Visualization
- geom_bar
- for loop
- hist
- visualizing
- Heatmap
- covid
- 숫자
- coronavirus
- geom_line
- Excel
- 데이터
- Python
- data
- RStudio
- 팟빵
- Cast
- BIOINFORMATICS
- 엑셀
- r
- Command
- comma
- Order
- 2진수
- Coding
- 코로나바이러스
- SEQ
- format
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |