我正在网上寻找解决方案,看似简单却令人头疼。
我有一个包含几列的数据框。
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] 删除。
我来说两句