看来这是一个简单的问题,但是我一直在努力使它起作用:

假设此数据框标识了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=1maxpos>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]))
    

    10-08 08:47