2016-07-05 27 views
7

Oto moje daneobliczyć częstotliwość R

> a 
[1] Male Male Female Male Male Male Female Female Male Male Female Male Male Male 
[15] Female Female Female Male Female Male Female Male Male Female Male Male Female Male 
[29] Male Male Female Male Male Male Female Female Male Male Male Male Male 
Levels: Female Male 

> b 
[1] 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 
Levels: 0 1 

> table(a,b) 
     b 
a   0 1 
      0 0 
    Female 10 4 
    Male 12 15 

nie wiem dlaczego wynikiem table(a,b) ma rząd (0 0), mój oczekiwany wynik jest następujący:

> table(a,b) 
     b 
a   0 1 
    Female 10 4 
    Male 12 15 

Could powiedz mi, dlaczego tak się dzieje i jak to poprawić, dziękuję!

> dput(a) 
structure(c(3L, 3L, 2L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 3L, 
3L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 3L, 3L, 2L, 3L, 3L, 
3L, 2L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("", 
"Female", "Male"), class = "factor") 

> dput(b) 
structure(c(1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 
2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L), .Label = c("0", 
"1"), class = "factor") 
+0

Czy długość '' B' A' i to samo? – Psidom

+8

możesz mieć poziomy pustki a tzn. '" ". Spróbuj 'nlevels (a)' – user20650

+0

@Psidom tak, długość 'a' i' b' jest taka sama – lightsnail

Odpowiedz

1

Od komentarzach powyżej:

Dzieje się tak dlatego, że jest pusta poziom czynnikiem a:

> levels(a) 
[1] ""  "Female" "Male" 

Możesz zachować stworzyć tabelę, która lekceważy pustych poziom czynnika (od @ komentarz lmo):

table(as.character(a), b) 

Alternatywnie, można łatwo usunąć poziomów czynnika bez obserwacji (od @ komentarzu Dave2e za)

a <- droplevels(a) 
table(a, b)