与条件匹配的聚合(count)行,按唯一值分组

前端之家收集整理的这篇文章主要介绍了与条件匹配的聚合(count)行,按唯一值分组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好像这样一个简单的问题,但是我一直在拉我的头发试图让这个工作:

鉴于此数据框架标识了由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版本:
ddply(sessions,.(contactGrp),summarise,count = length(contact[relpos == 0 & maxpos > 1]))
原文链接:https://www.f2er.com/javaschema/282122.html

猜你在找的设计模式相关文章