Dplyr을 사용하여 상대 빈도를 계산하는 방법


R에서 데이터 프레임의 하나 이상의 열에 있는 값의 상대 빈도/비율을 계산하려는 경우가 종종 있습니다.

다행스럽게도 dplyr 패키지의 함수를 사용하면 이 작업을 쉽게 수행할 수 있습니다. 이 튜토리얼에서는 이러한 함수를 사용하여 다음 데이터 프레임에서 상대 빈도를 계산하는 방법을 보여줍니다.

 #create data frame
df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'),
                 points = c(12, 15, 19, 22, 32, 34, 39))

#view data frame
df

  team position points
1 AG 12
2 AF15
3 FY 19
4 BG 22
5 BG 32
6 BG 34
7 BF 39

예시 1: 변수의 상대 빈도

다음 코드는 데이터 프레임에서 각 팀의 상대 빈도를 계산하는 방법을 보여줍니다.

 library(dplyr)

df %>%
  group_by (team) %>%
  summarize (n = n()) %>%
  mutate (freq = n / sum(n))

# A tibble: 2 x 3
  team n freq
    
1 to 3 0.429
2 B 4 0.571

이는 A팀이 데이터 프레임의 모든 행 중 42.9%를 차지하고 B팀이 나머지 57.1%를 차지한다는 것을 알려줍니다. 이 둘을 합치면 100%가 된다는 점에 유의하세요.

관련 항목: 전체 가이드: R에서 데이터를 그룹화하고 요약하는 방법

예시 2: 여러 변수의 상대 빈도

다음 코드는 팀당 위치의 상대 빈도를 계산하는 방법을 보여줍니다.

 library(dplyr)

df %>%
  group_by (team, position) %>%
  summarize (n = n()) %>%
  mutate (freq = n / sum(n))

# A tibble: 4 x 4
# Groups: team [2]
  team position n freq
       
1 AF 2 0.667
2 AG 1 0.333
3 BF 1 0.250
4 BG 3 0.750

이는 다음을 알려줍니다.

  • A팀 선수의 66.7%가 F포지션에 있습니다.
  • A팀 선수의 33.3%가 G 포지션에 있습니다.
  • A팀 선수의 25.0%가 F포지션에 있습니다.
  • B팀 선수의 75.0%가 G 포지션에 있다.

관련: Mutate를 사용하여 R에서 새 변수를 만드는 방법

예 3: 상대 빈도를 백분율로 표시

다음 코드는 팀별 위치의 상대 빈도를 계산하는 방법과 이러한 상대 빈도를 백분율로 표시하는 방법을 보여줍니다.

 library(dplyr)

df %>%
  group_by (team, position) %>%
  summarize (n = n()) %>%
  mutate (freq = paste0(round(100 * n/sum(n), 0), ' % '))

# A tibble: 4 x 4
# Groups: team [2]
  team position n freq 
       
1 AF 2 67%  
2 GA 1 33%  
3 BF 1 25%  
4 BG 3 75%

여기에서 더 많은 R 튜토리얼을 찾을 수 있습니다.

의견을 추가하다

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