Jak obliczyć częstotliwości względne za pomocą dplyr
Często możesz chcieć obliczyć względne częstotliwości/proporcje wartości w jednej lub większej liczbie kolumn ramki danych w R.
Na szczęście można to łatwo zrobić, korzystając z funkcji pakietu dplyr . W tym samouczku pokazano, jak używać tych funkcji do obliczania częstotliwości względnych w następującej ramce danych:
#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
Przykład 1: Częstotliwość względna zmiennej
Poniższy kod pokazuje, jak obliczyć względną częstotliwość każdego zespołu w ramce danych:
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
To mówi nam, że zespół A tworzy 42,9% wszystkich wierszy w ramce danych, podczas gdy zespół B tworzy pozostałe 57,1% wierszy. Należy pamiętać, że razem sumują się do 100%.
Powiązane: Kompletny przewodnik: Jak grupować i podsumowywać dane w języku R
Przykład 2: Względna częstotliwość kilku zmiennych
Poniższy kod pokazuje, jak obliczyć względną częstotliwość pozycji na zespół:
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
To mówi nam, że:
- 66,7% zawodników drużyny A jest na pozycji F.
- 33,3% zawodników drużyny A jest na pozycji G.
- 25,0% zawodników drużyny A jest na pozycji F.
- 75,0% zawodników drużyny B znajduje się na pozycji G.
Powiązane: Jak używać funkcji Mutuj do tworzenia nowych zmiennych w języku R
Przykład 3: Pokaż częstotliwości względne jako procenty
Poniższy kod pokazuje, jak obliczyć względną częstotliwość pozycji według zespołu i jak wyświetlić te względne częstotliwości jako wartości procentowe:
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%
Więcej samouczków dotyczących języka R można znaleźć tutaj .