2016-01-18 18 views
11

Chciałbym stworzyć tabelę, która ma częstotliwość kilku kolumn w mojej ramce danych. Poniżej kopiuję część mojej ramki danych.Jak używać dplyr do generowania tabeli częstotliwości

Tabela ma mieć częstotliwość (zarówno n jak i%) "czerwony" w kolorze i "F" w płcie.

Myślę, że pakiet dplyr mógłby to zrobić, ale nie mogę tego rozgryźć.

Thank you-

 
    RespondentID Color  Gender 
1  1503   Red   F  
2  1653   NA   M 
3  1982   Red   F 
4  4862   Red   NA 
15 4880   Blue   M 

+1

co spróbowałeś – rawr

+1

Ile kolumn? W twoim przypadku wystarczy prosty "table" lub "prop.table". –

+0

Mam prawie 10 kolumn dla dwóch różnych zestaw danych. Mam nadzieję, że uda mi się uzyskać liczby (licznik i%) dla każdej zmiennej (kolumny), aby utworzyć wykres słupkowy pokazujący różnicę między trendami w tych dwóch zestawach danych. – Rooz

Odpowiedz

16
library(dplyr) 

df %>% 
    count(Color, Gender) %>% 
    mutate(prop = prop.table(n)) 

# Source: local data frame [4 x 4] 
# Groups: Color [3] 
# 
# Color Gender  n  prop 
# (fctr) (fctr) (int)  (dbl) 
# 1 Blue  M  1 1.0000000 
# 2 Red  F  2 0.6666667 
# 3 Red  NA  1 0.3333333 
# 4  NA  M  1 1.0000000 

Aktualizacja za komentarz - jeśli chcesz wyglądać na każdej zmiennej oddzielnie, trzeba będzie przebudować dataframe pierwszy. Możesz to osiągnąć dzięki tidyr:

library(tidyr) 
library(dplyr) 

gather(df, "var", "value", -RespondentID) %>% 
    count(var, value) %>% 
    mutate(prop = prop.table(n)) 

# Source: local data frame [6 x 4] 
# Groups: var [2] 
# 
#  var value  n prop 
# (fctr) (chr) (int) (dbl) 
# 1 Color Blue  1 0.2 
# 2 Color Red  3 0.6 
# 3 Color NA  1 0.2 
# 4 Gender  F  2 0.4 
# 5 Gender  M  2 0.4 
# 6 Gender NA  1 0.2 
+0

Chcę obliczyć częstotliwość czerwieni w kolorze kolumny i płci żeńskiej osobno w kolumnie. Kolumny te są zmiennymi niezależnymi. Mam prawie 10 kolumn dla dwóch różnych zestawów danych. Mam nadzieję, że uda mi się uzyskać liczby (licznik i%) dla każdej zmiennej (kolumny), aby utworzyć wykres słupkowy pokazujący różnicę między trendami w tych dwóch zestawach danych. – Rooz

+0

@Rooz zaktualizował moją odpowiedź za komentarz. Być może powinieneś opublikować nowe pytanie, które jest bardziej szczegółowe, ponieważ tworzenie gry jest końcową grą, ponieważ prawdopodobnie istnieją lepsze sposoby na zaatakowanie tego konkretnego pytania i wyniku. Co więcej, wygląda na to, że podane dane przykładowe nie odzwierciedlają dokładnie tych danych - być może powinieneś spróbować pracować nad stworzeniem odtwarzalnego przykładu i/lub przykładowego zestawu danych, który najlepiej oddaje wyjątkowe wyzwania twojego zbioru danych. – JasonAizkalns

+0

Będę śledzić twoją sugestię dla przyszłych pytań, które zamieszczam. Dziękuję bardzo za Twoją pomoc. – Rooz

Powiązane problemy