2014-06-24 44 views
0

好的,所以這個問題看起來很簡單,但我無法弄清楚。基本上我有以下data.table結構:計數因子組合

dt =data.table(group=sample(c("A","B"),10,replace=T), 
fact=sample(c("Q","R","S","v"),10,replace=T)) 

group fact 
1 B Q 
2 B S 
3 A S 
4 B S 
5 A Q 
6 B v 
7 A v 
8 A S 
9 B Q 
10 A R 

現在我想找到組和事實的每個組合的數量。

group fact V1 
1 B Q  2 
2 B S  2 
3 A S  2 
4 B S  1 
5 A Q  1 
6 B v  1 
etc. 

我似乎無法弄清楚使用data.table。 以下只給我獨特的因素。

dt=dt[,length(unique(fact)),by=list(group,fact)] 

回答

2

你可以得到

as.data.frame(table(dt$group, dt$fact)) 

一個data.frame然後,您可以施放此回data.table,和子集上頻率!= 0等

或數據。表版本

dt[,list(freq=.N), by=list(group, fact)] 
2

使用.N這樣的:

dt[, .N, by=list(group, fact)] 

閱讀help("data.table")瞭解.N及其有用的朋友。

0

下面是使用n()一個dplyr解決方案:

dt %>% group_by(group, fact) %>% summarise(N = n())