我在网上搜索解决问题的方法似乎很容易但令我头疼。
我有一个包含多个列的数据框。
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
,我需要计算任何&#34; A&#34;在每年1 =存在,0 =不存在(多次出现不单独计算,例如对于2011年的West,因此使用的产品A = 1)。然后应将其除以相应位置的唯一年份总数。
输出应该看起来像
Location User Product
1 East 0.3333333 0.5
2 North 0.6666667 1
3 West 0.3333333 1
我希望我能很好地描述我的问题,有人可以给我一个如何实现这个目标的提示。 提前致谢
答案 0 :(得分:2)
我希望这是您正在寻找的答案:
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