R通过存在当前事件来汇总数据

时间:2014-04-25 10:09:26

标签: r dataframe plyr

我在网上搜索解决问题的方法似乎很容易但令我头疼。

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

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

我希望我能很好地描述我的问题,有人可以给我一个如何实现这个目标的提示。 提前致谢

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
相关问题