2016-11-14 81 views
0

我想知道發生的頻率0.有沒有簡單的方法呢?計數的頻率,如何有零頻率?

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

我用這一個看到的v1v2

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

它給了我下面的結果的頻率。

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

我希望在我的輸出中有零。例如al2的組合從未發生過。我如何獲得以下輸出?

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,是myDF $ V2)) –

+0

簡單的黑客:您可以使用expand.grid來生成因子水平的所有組合的數據幀。然後你可以加入你已有的結果。 – lbusett

+0

你可以使用'dplyr'軟件包並做類似'this library(dplyr) nf%>%group_by(v1,v2)%>%summarize(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