好像这样一个简单的问题,但是我一直在拉我的头发试图让这个工作:
鉴于此数据框架标识了由contactGrp分组的联系人的交互idhad,
head(data) id sesTs contact contactGrp relpos maxpos 1 6849 2012-06-25 15:58:34 peter west 0.000000 3 2 6849 2012-06-25 18:24:49 sarah south 0.500000 3 3 6849 2012-06-27 00:13:30 sarah south 1.000000 3 4 1235 2012-06-29 17:49:35 peter west 0.000000 2 5 1235 2012-06-29 23:56:35 peter west 1.000000 2 6 5893 2012-06-30 22:21:33 carl east 0.000000 1
在relpos = 1和maxpos> 1之间有多少个联系人(数据$ contactGrp)
预期结果将是:
1 west 1 2 south 1 3 east 0
我尝试过的一小部分线条
> aggregate(data,by = list(‘contactGrp’),FUN = count)产生错误,不进行过滤
>使用data.table似乎需要一个键,这在这个数据中不是唯一的…
> ddply(data,“contactGrp”,总结,count = ???)不知道用哪个函数来填充count列
> ddply(数据,数据,maxpos> 1& relpos == 0),c(‘contactGrp’),函数(df)count(df $ relpos))工作,但给我一个额外的列x,它感觉像我’已经复杂了…
sql将很容易:从数据中选择contactGrp,count(*)作为cnt …根据contactGrp分组,但尝试学习R
我认为这是你正在寻找的ddply版本:
原文链接:https://www.f2er.com/javaschema/282122.htmlddply(sessions,.(contactGrp),summarise,count = length(contact[relpos == 0 & maxpos > 1]))