Dplyr을 사용하여 크로스탭을 만드는 방법(예제 포함)


R에서 dplyrTidyr 패키지의 함수를 사용하여 크로스탭을 생성하려면 다음 기본 구문을 사용할 수 있습니다.

 df %>%
  group_by (var1, v ar2) %>%
  tally () %>%
  spread (var1,n)

다음 예에서는 이 구문을 실제로 사용하는 방법을 보여줍니다.

예 1: 기본 크로스탭 만들기

R에 다음과 같은 데이터 프레임이 있다고 가정합니다.

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'),
                 dots=c(7, 7, 8, 11, 13, 15, 19, 13))

#view data frame
df

  team position points
1 AG 7
2 AG 7
3AF 8
4 AC 11
5 BG 13
6 BF 15
7 BF 19
8 BC 13

다음 구문을 사용하여 “팀” 및 “위치” 변수에 대한 크로스탭을 만들 수 있습니다.

 library (dplyr)
library (tidyr)

#produce crosstab
df %>%
group_by (team, position) %>%
tally () %>%
spread (team, n)

# A tibble: 3 x 3
  position AB
1 C 1 1
2 F 1 2
3 G 2 1

크로스탭 값을 해석하는 방법은 다음과 같습니다.

  • A팀에 속한 C 포지션의 선수가 1 명 있습니다.
  • ‘C’ 포지션에 ‘B’ 팀에 소속된 선수가 1 명 있습니다.
  • A팀에 소속된 F포지션 선수가 1 명이 있습니다.
  • B팀에 소속된 F 포지션의 선수가 2 명 있습니다.
  • A팀에 소속된 ‘G’ 포지션의 선수가 2 명이 있다.
  • ‘G’ 포지션에 ‘B’ 팀에 소속된 선수가 1 명 있습니다.

Spread() 함수에 사용된 변수를 변경하여 크로스탭의 행과 열을 변경할 수 있습니다.

 library (dplyr)
library (tidyr)

#produce crosstab with 'position' along columns
df %>%
group_by (team, position) %>%
tally () %>%
spread (position, n)

# A tibble: 2 x 4
# Groups: team [2]
  team CFG
1 A 1 1 2
2 B 1 2 1

관련 항목: Tidyr의 Spread 기능을 사용하는 방법

추가 리소스

다음 튜토리얼에서는 dplyr에서 다른 일반적인 기능을 수행하는 방법을 설명합니다.

dplyr을 사용하여 상대 빈도를 계산하는 방법
dplyr을 사용하여 인덱스로 열을 선택하는 방법
dplyr을 사용하여 행을 삭제하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다