我正在进行迁移分析我在Excel中进行R,因为我的数据集达到了Excel的极限。
在Excel中,我有一个工作表("州")执行sumifs函数,将来自另一个工作表("成员)的值与&#34中具有相同状态/周组合的值相加;状态&#34 ;.
我想在R中执行此操作,其中" state"和"会员"是data.frames。因此,对于"状态"中的所有行data.frame,我想总结来自"成员"的所有行。在" state"。
中具有相同状态/周组合的data.frame数据集
state=data.frame(state=c('MD','MD','MD','NY','NY','NY'), week = 1:3)
member=data.frame(memID = 1:5, state = c('MD','MD','NY','NY','MD'),
week = 1:3,
value = c(24,43,34,54,33,35,33,11,42,23,14,12,42,4,23))
期望输出
state = data.frame(state=c('MD','MD','MD','NY','NY','NY'), week = 1:3,
total = c(80,90,70,96,15,76))
谢谢!
修改
我最初过度简化了我的例子 - sumifs还考虑了多个不等式。所以在这个例子中,使用相同的数据,如果值在20到40之间,我将如何计算总和?
新的Desired Output将是
state = data.frame(state=c('MD','MD','MD','NY','NY','NY'), week = 1:3,
total = c(80,33,58,0,0,34) )
state
答案 0 :(得分:1)
尝试
aggregate(value~state+week, member, sum)
或者
library(data.table)#v1.9.5+
setDT(member)[, list(total=sum(value)), list(state, week)]
如果您需要sum
获取'值'在20到40之间。
setDT(member)[, sum(value[between(value,20,40)]) ,list(state, week)]