Jak utworzyć tabelę częstości według grup w r


Aby utworzyć tabelę częstotliwości według grup w R, możesz użyć następujących funkcji z pakietu dplyr :

 library (dplyr)

df %>%
  group_by (var1, var2) %>%
  summarize (Freq=n())

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Utwórz tabelę częstotliwości według grup

Załóżmy, że mamy następującą ramkę danych w R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'G', 'F', 'G', 'F', 'F', 'C'))

#view data frame
df

  team position
1 AG
2 AG
3 AG
4 AF
5 BG
6 BF
7 BF
8 BC

Załóżmy, że chcemy utworzyć tabelę częstotliwości pokazującą częstotliwość występowania każdej pozycji, pogrupowaną według zespołu.

W tym celu możemy użyć następującej składni:

 library (dplyr)

#calculate frequency of position, grouped by team
df %>%
group_by (team, position) %>%
summarize (Freq=n())

# A tibble: 5 x 3
# Groups: team [2]
  team position Freq
       
1 AF 1
2 AG 3
3 BC 1
4 BF 2
5 BG 1

Oto jak zinterpretować wynik:

  • 1 zawodnik drużyny A zajmuje pozycję „F”
  • Trzech zawodników drużyny A ma pozycję „G”
  • 1 zawodnik drużyny B zajmuje pozycję „C”
  • 2 zawodników drużyny B ma pozycję „F”
  • 1 zawodnik drużyny B zajmuje pozycję „G”

Zauważ, że możemy zmienić nazwę kolumny zawierającej częstotliwości, zmieniając nazwę zmiennej w funkcji podsumowania() .

Na przykład możemy zamiast tego zmienić nazwę kolumny na „count”:

 library (dplyr)

#calculate frequency of position, grouped by team
df %>%
  group_by (team, position) %>%
  summarize (count=n())

# A tibble: 5 x 3
# Groups: team [2]
  team position count
       
1 AF 1
2 AG 3
3 BC 1
4 BF 2
5 BG 1

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe funkcje w dplyr:

Jak obliczyć częstotliwości względne za pomocą dplyr
Jak sortować zmienne według grup za pomocą dplyr
Jak wybrać kolumny według indeksu za pomocą dplyr

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *