在R中按组计算唯一值

时间:2016-03-31 09:24:35

标签: r

我有一个如下所示的数据集:

SID     group  timepoint 
 5402       A    0
 5402       B    0
 5402       C    1
 5403       A    0     
25403       B    1
25403       C    1

我想计算每组x时间点有多少个唯一的SID。 到目前为止,我一直在手工制作组合,如下所示:

length(unique(subset(df, timepoint=='0' & group=='A')$SID))
length(unique(subset(df, timepoint=='0' & group=='B')$SID))
...

有没有办法使用分组函数给我一张包含所有计数的表格? (例如bytapply?) 谢谢!

1 个答案:

答案 0 :(得分:2)

我们可以使用uniqueN中的data.table。转换' data.frame'到' data.table' (setDT(df1)),按'分组'和' timepoint',获取' SID'的unique元素的长度。 (uniqueN(SID))。

 library(data.table)
 setDT(df1)[, .(UnSID=uniqueN(SID)), .(group, timepoint)]