我试图为我在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
=IF(C2>0;(SUMIFS($C$2:$C$7;$A$2:$A$7;A2;$B$2:$B$7;">="&B2));C2)
在R中,我试图写一个蹒跚学步的函数,但我很难在里面的for循环中睡觉。这里是我的工作地点:
(检验,(ID,x),变异,z=函数(Y))
我也曾尝试过“总结”,但条件问题依然存在。我希望在定义函数(y)方面提供任何帮助,这样我就可以得到一个等效的excel结果。非常感谢。
发布于 2018-07-27 19:05:49
这有点蛮力,可能不是最好的方法,但它复制了Excel输出:
# 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
发布于 2018-07-18 12:00:15
我把你的配方贴在一张纸上修改如下..。
=IF(C2>0,(SUMIFS($C$2:$C$7,$A$2:$A$7,A2,$B$2:$B$7,">="&B2)),C2)
我把分号换成逗号了。
我得到的结果..。
https://stackoverflow.com/questions/51409339
复制