R根据当前事件的存在汇总数据

用户名

我正在网上寻找解决方案,看似简单却令人头疼。

我有一个包含几列的数据框。

Location<-c("East","East","East","West","West","West","North","North","North")
Year<-c(2009,2009,2010,2010,2011,2011,2012,2013,2013)
Product<-c("A","A","B","A","A","A","A","B","A")
User<-c("GH","GH","AB","AB","AAB","A","G","AB","AB")
a<-data.frame(Location,Year,User,Product)

我需要总结其专栏。我更喜欢用ddply来做,对于列,User它看起来像:

ddply(a,.(Location),summarize,
      User=sum(User=="AB")/NROW(User)
            )

但是,对于该列,Product我需要将每年出现的“ A”计数为1 =存在,0 =不存在(不单独统计多次发生,例如,对于West,2011年使用的产品A因此为= 1)。然后,应将其除以相应位置的唯一年份总数。

输出应该看起来像

 Location   User     Product
1     East 0.3333333    0.5
2    North 0.6666667    1
3     West 0.3333333    1

我希望我已经很好地描述了我的问题,并且有人可以给我一些有关如何实现此目标的提示。提前致谢

鸽子

我希望这是您正在寻找的答案:

ddply(a,.(Location),summarise,
      User=sum(User=="AB")/NROW(User),
      Product =length(unique(Year[Product=="A"]))/length(unique(Year)))

  Location      User Product
1     East 0.3333333     0.5
2    North 0.6666667     1.0
3     West 0.3333333     1.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章