看来这是一个简单的问题,但是我一直在努力使它起作用:
假设此数据框标识了id
与按contact
分组的contactGrp
之间的互动,
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
带有
unique(data$contactGrp)
和relpos=1
的maxpos>1
的联系人数量是多少?预期结果将是:
1 west 1
2 south 1
3 east 0
我尝试过的一小部分线:
aggregate(data, by=list('contactGrp'), FUN=count)
产生错误,不过滤data.table
的ddply(data,"contactGrp",summarise,count=???)
不确定要使用哪个函数来填充count
列ddply(subset(data,maxpos>1 & relpos==0), c('contactGrp'), function(df)count(df$relpos))
可以工作,但是给了我一个额外的列x
,感觉就像我把它复杂化了……SQL很容易:
Select contactGrp, count(*) as cnt from data where … Group by contactGrp
,但是我正在尝试学习R
最佳答案
我认为这是您要查找的ddply
版本:
ddply(sessions,.(contactGrp),
summarise,
count = length(contact[relpos == 0 & maxpos > 1]))