首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >利用ddply在R中的EXCEL SUMIFS

利用ddply在R中的EXCEL SUMIFS
EN

Stack Overflow用户
提问于 2018-07-18 19:05:42
回答 2查看 318关注 0票数 2

我试图为我在EXCEL中实现的下表实现一个SUMIFS逻辑(分别为A、B、C列):

代码语言:javascript
代码运行次数:0
运行
复制
ID  x   y
123 3   50
123 2   -10
123 4   -20
124 3   50
124 2   -10
124 4   -20
  1. 使用公式创建一个新的向量z:

=IF(C2>0;(SUMIFS($C$2:$C$7;$A$2:$A$7;A2;$B$2:$B$7;">="&B2));C2)

  1. 复制公式,以填充向量z,它可以工作。
  2. 对于每一行,如果"y“>0时,如果ID相同且"x”的值大于当前行中"x“的值,则公式将添加"y”的值。

在R中,我试图写一个蹒跚学步的函数,但我很难在里面的for循环中睡觉。这里是我的工作地点:

(检验,(ID,x),变异,z=函数(Y))

我也曾尝试过“总结”,但条件问题依然存在。我希望在定义函数(y)方面提供任何帮助,这样我就可以得到一个等效的excel结果。非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-28 03:05:49

这有点蛮力,可能不是最好的方法,但它复制了Excel输出:

代码语言:javascript
代码运行次数:0
运行
复制
# sample data:
df <- read.table(text = 'ID  x   y
                 123 3   50
                 123 2   -10
                 123 4   -20
                 124 3   50
                 124 2   -10
                 124 4   -20', header = TRUE)

# create a new column called 'sum_y' using the defined rules:
for(i in 1:nrow(df)){
  if (df$y[i] > 0) df$sum_y[i] = sum(df$y[df$x >= df$x[i] & df$ID == df$ID[i]])
  else df$sum_y[i] = df$y[i] 
}

# view the output:
df
   ID x   y sum_y
1 123 3  50    30
2 123 2 -10   -10
3 123 4 -20   -20
4 124 3  50    30
5 124 2 -10   -10
6 124 4 -20   -20
票数 0
EN

Stack Overflow用户

发布于 2018-07-18 20:00:15

我把你的配方贴在一张纸上修改如下..。

代码语言:javascript
代码运行次数:0
运行
复制
=IF(C2>0,(SUMIFS($C$2:$C$7,$A$2:$A$7,A2,$B$2:$B$7,">="&B2)),C2)

我把分号换成逗号了。

我得到的结果..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51409339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档