2016-04-19 3 views
0

вхождение Я данные, как следоватьПерестройка кадр данных и нб

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") 

Я попытался это: cc=count(mydata, c("X", "Sous_Categorie")) это дает мне

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 

Но я стремлюсь, чтобы получить из положить, как это: X всегда от 1 до 12, даже если нет значения, nb_freq - номер вхождения в X

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

Какой самый простой способ сделать это? Благодаря

ответ

1

Мы можем использовать

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

Почти то, что я ищу, спасибо! но как указать X от 1 до 12, даже у меня нет значений для 2, 11, 12? – ranell

+1

@ranell Вы имели в виду 'mydata%>% group_by (X, Sous_Categorie)%>% tally()%>% spread (Sous_Categorie, n)%>% left_join (data_frame (X = коэффициент (1:12)).) ' – akrun

+0

Точно, не думал об использовании левого соединения для этой цели. Большое спасибо ! – ranell

Смежные вопросы