【发布时间】:2018-07-18 19:05:42
【问题描述】:
我正在尝试为我在 EXCEL 中实现的下表实现一个 SUMIFS 逻辑(分别为 A、B、C 列):
ID x y
123 3 50
123 2 -10
123 4 -20
124 3 50
124 2 -10
124 4 -20
- 使用以下公式创建一个新向量 z:
=IF(C2>0;(SUMIFS($C$2:$C$7;$A$2:$A$7;A2;$B$2:$B$7;">="&B2));C2)
将公式向下复制以填充向量 z 即可。
对于每一行,如果“y”> 0,如果 ID 相同且“x”的值大于当前行中“x”的值,则公式添加“y”的值.
在 R 中,我曾尝试编写一个 ddply 函数,但我在其中的 for 循环中挣扎。所以这就是我所在的位置:
ddply(test,.(ID,x), mutate, z = function(y))
我同样尝试过“总结”,但条件问题仍然存在。 我将不胜感激在定义函数 (y) 方面的任何帮助,以便我可以获得等效的 excel 结果。非常感谢。
【问题讨论】:
-
你期待什么结果,你得到了什么?我把它放在电子表格上,它似乎正在工作,但我不知道你在期待什么。我得到 30、-10、-20、30、-10、-20。
-
嗨,蒂姆 - 同意,公式在 excel 中有效。我正在寻找一种方法来使用 ddply 或任何其他合适的函数在 R 中执行此操作。
-
啊,这就是我出错的地方。