2016-04-19 5 views
0

I-Daten haben alsumformen Datenrahmen und nb Vorkommen

mydata=structure(list(X = structure(c(6L, 6L, 7L, 7L, 8L, 10L, 10L, 
    10L, 10L, 1L, 1L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 9L, 
    8L, 8L, 9L, 9L, 9L, 8L, 10L, 8L, 9L, 8L, 8L, 10L, 10L, 10L, 10L, 
    10L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8", "9", 
    "10", "11", "12"), class = "factor"), Sous_Categorie = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L), .Label = c("o,y", "y"), class = "factor")), .Names = c("X", 
    "Sous_Categorie"), row.names = c(NA, -86L), class = "data.frame") 

folgen diese habe ich versucht: cc=count(mydata, c("X", "Sous_Categorie")) es gibt mir

X Sous_Categorie freq 
1 1    y 2 
2 3    y 4 
3 4    y 5 
4 5    y 26 
5 6   o,y 2 
6 6    y 16 
7 7   o,y 2 
8 7    y 7 
9 8   o,y 1 
10 8    y 6 
11 9    y 5 
12 10   o,y 4 
13 10    y 6 

Aber ich bin mit dem Ziel, da dies zu erhalten, außer Betrieb gesetzt: X ist immer von 1 bis 12, auch wenn kein Wert ist, nb_freq ist das Vorkommen Zahl in X

X  o,y  o 
1  nb_freq nb_freq 
. 
. 
12  nb_freq nb_freq 

Was ist der einfachste Weg, dies zu tun? Dank

Antwort

1

Wir

library(dplyr) 
library(tidyr) 
mydata %>% 
    group_by(X, Sous_Categorie) %>% 
    tally() %>% 
    spread(Sous_Categorie, n) %>% 
    left_join(data_frame(X= factor(1:12)), .) 
+0

Fast verwenden, was ich suche, danke! aber wie X von 1 bis 12 angeben, auch ich habe keine Werte für 2, 11, 12? – ranell

+1

@ranell Meinen Sie: 'mydata%>% group_by (X, Sous_Categorie)%>% tally()%>% spread (Sous_Categorie, n)%>% left_join (Datenrahmen (X = Faktor (1:12)),.) ' – akrun

+0

Genau, dachte nicht über die Verwendung linker Joins für diesen Zweck. Danke vielmals ! – ranell