2016-11-14 2 views
0

Я хочу знать частоты, которые произошли 0. Есть ли простой способ для этого?считать частоту, как иметь нулевые частоты?

mydf <-data.frame(v1= c("a","b","b","a","b"), v2 =c("l1", "l2","l1","l1","l2")) 

Я использую этот один, чтобы увидеть частоты v1 и v2

library(plyr) 
count(mydf, c('v1','v2')) 

Это дает мне следующий результат.

v1 v2 freq 
1 a l1 2 
2 b l1 1 
3 b l2 2 

Я хочу иметь нули в моем выходе. Например, комбинация a и l2 так и не произошла. Как я могу получить следующий результат?

v1 v2 freq 
1 a l1 2 
2 b l1 1 
3 b l2 2 
4 a l2 0 
+1

as.data.frame (таблица (mydf $ v1, v2 mydf $)) –

+0

Простой хак: Вы можете использовать expand.grid для создания кадра данных со всеми комбинациями уровней факторов. Тогда вы можете просто присоединиться к этому с результатом, который у вас уже есть. – lbusett

+0

вы можете использовать пакет 'dplyr' и делать так, как' this library (dplyr) nf%>% group_by (v1, v2)%>% sumize (no = n()) ', но он теряет строку, где' Freq == 0' – Mateusz1981

ответ

3
table(mydf$v1, mydf$v2) 

    l1 l2 
    a 2 0 
    b 1 2 

as.data.frame(table(mydf$v1, mydf$v2)) 
    Var1 Var2 Freq 
1 a l1 2 
2 b l1 1 
3 a l2 0 
4 b l2 2 
Смежные вопросы