【问题标题】:Cumulative sum of values by two columns [duplicate]两列的值的累积总和[重复]
【发布时间】:2019-07-09 10:16:17
【问题描述】:

我有一个名为 AD 的数据框,有 50 行和 12 列 我想按行添加值,以便:

AD[1,2] <- AD[1,1] + AD[1,2]
AD[1,3] <- AD[1,2] + AD[1,3]

每行以此类推。

我尝试了以下方法:

for (i in nrow(AD)) {
for (j in ncol(AD)) {
AD[i,j] <- AD[i,j] + AD[i,j-1] }}

这里是一个例子:

    a  b  c
1   1  2  3
2   2  3  4
3   3  0  5
4   4  5  6
5   5  0  7
6   6  7  8

我想拥有:

    a  b  c
1   1  3  6
2   2  5  9
3   3  3  8
4   4  9  15
5   5  5  12
6   6  13 21

【问题讨论】:

  • Sabrina,您能否提供一个数字示例让我了解您在寻找什么?
  • @SabrinaG。 - 使用上面的“编辑”链接并将数据集(以及理想的预期输出)添加到问题中。不幸的是,它不会在 cmets 中很好地格式化。
  • 在哪里可以找到重复的问题?谢谢

标签: r loops for-loop


【解决方案1】:

按以下方式进行::)

> AD <-data.frame(a = c(1:6),
+            b = c(2,3,0,5,0,7),
+            c=  c(3:8))
> for(i in 1:nrow(AD)){
+   AD[i,2] <- AD[i,1] + AD[i,2]
+   AD[i,3] <- AD[i,2] + AD[i,3]
+   
+ }
> AD
  a  b  c
1 1  3  6
2 2  5  9
3 3  3  8
4 4  9 15
5 5  5 12
6 6 13 21

【讨论】:

  • 这个问题不是在每一行的列中求和吗?
  • 我理解我的例子中的问题(我重新编辑了答案)。 @thelatemail,如果我理解错了,请告诉我。
  • 举个例子可能更容易-尝试AD &lt;- myframe然后运行OP建议的两行。 AD[1,2] &lt;- AD[1,1] + AD[1,2] 正在用同一行中的第一列和第二列之和覆盖第一行的第二列。
  • 我部分同意。我已经更改了变量名。但是,重写相同的变量会使他/她看不到自己在做什么,因此,我将其写在不同的列中。
  • 我不能只使用 cumsum 因为我不需要每一行的累积总和,而是每一步的累积总和(从 AD[1,1] 到 AD[1,2] 和等等)。
猜你喜欢
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2020-03-12
  • 1970-01-01
  • 2018-07-02
相关资源
最近更新 更多