R에서 넓은 형식과 긴 형식 간의 데이터 형태를 변경하는 방법
R의 데이터 프레임은 넓은 형식이나 긴 형식 으로 표시될 수 있습니다.
목적에 따라 데이터 프레임을 이러한 특정 형식 중 하나로 만들 수 있습니다.
이러한 형식 간에 데이터를 재구성하는 가장 쉬운 방법은 R의 Tidyr 패키지에서 다음 두 가지 기능을 사용하는 것입니다.
- ivot_longer() : 데이터 블록을 와이드 형식에서 긴 형식으로 변경합니다.
- ivot_wider() : 긴 형식에서 와이드 형식으로 데이터 블록의 모양을 변경합니다.
다음 예에서는 각 기능을 실제로 사용하는 방법을 보여줍니다.
예 1: 넓은 데이터를 긴 데이터로 재구성
현재 와이드 형식인 R에 다음과 같은 데이터 프레임이 있다고 가정합니다.
#create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D'),
year1=c(12, 15, 19, 19),
year2=c(22, 29, 18, 12))
#view data frame
df
player year1 year2
1 to 12 22
2 B 15 29
3 C 19 18
4 D 19 12
이 데이터 프레임을 긴 형식으로 회전하려면 ivot_longer() 함수를 사용할 수 있습니다.
library (tidyr)
#pivot the data frame into a long format
df %>% pivot_longer(cols=c(' year1 ', ' year2 '),
names_to=' year ',
values_to=' points ')
# A tibble: 8 x 3
player year points
1 A year1 12
2 A year2 22
3 B year1 15
4 B year2 29
5 C year1 19
6 C year2 18
7 D year1 19
8 D year2 12
year1 및 year2 열 이름은 이제 “year”라는 새 열의 값으로 사용되고 해당 원래 열의 값은 “points”라는 새 열에 배치됩니다.
최종 결과는 긴 데이터 프레임입니다.
참고 : 여기서 Pivot_longer() 함수에 대한 전체 문서를 찾을 수 있습니다.
예 2: 데이터를 긴 것에서 넓은 것으로 재구성
현재 긴 형식인 R에 다음과 같은 데이터 프레임이 있다고 가정합니다.
#create data frame
df <- data. frame (player=rep(c('A', 'B'), each= 4 ),
year=rep(c(1, 1, 2, 2), times= 2 ),
stat=rep(c('points', 'assists'), times= 4 ),
amount=c(14, 6, 18, 7, 22, 9, 38, 4))
#view data frame
df
player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4
이 데이터 프레임을 넓은 형식으로 회전하려면 ivot_wider() 함수를 사용할 수 있습니다.
library (tidyr)
#pivot the data frame into a wide format
df %>% pivot_wider(names_from = stat, values_from = amount)
# A tibble: 4 x 4
player year points assists
1 A 1 14 6
2 A 2 18 7
3 B 1 22 9
4 B 2 38 4
이제 통계 열의 값은 열 이름으로 사용되고 금액 열의 값은 이러한 새 열의 셀 값으로 사용됩니다.
최종 결과는 큰 데이터 블록입니다.
참고 : 여기서 Pivot_wider() 함수에 대한 전체 문서를 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
R에서 그룹별로 고유한 값을 계산하는 방법
R에서 NA가 아닌 값을 계산하는 방법
R에서 상대도수표를 만드는 방법