【发布时间】:2020-03-27 14:25:12
【问题描述】:
我有一个带有 col1、val1 和 val2 的数据框。请参见下面的示例。添加“diff_row_val1”只是为了解释问题。
col1 val1 val2 diff_row_val1
1 1000 5000 NA
2 1500 5500 500
3 2000 6000 500
4 2500 6500 500
5 25000 29000 22500
6 25500 29500 500
7 26000 30000 500
8 100 4100 -25900
9 600 4600 500
我想逐行遍历文件并始终检查“val1”列中的值之间的差异是否 = 500。我添加了“diff_row_val1”列,因此您可以明白我的意思。如果是这种情况,他应该继续直到 FALSE 并将 col1、val1 和新列的值存储在输出中:总计。 Total 包含 'val1' 中的值之间的差值之和。第一种情况是:(1500-1000)+(2000-1500)+(2500-2000)=1500
我的输出应该是这样的
col1 val1 total
1 1000 1500
5 25000 1000
8 100 500
我从 for 和 while 循环开始,但我一直在生成输出。
total = 0
for (i in 1:nrow(df)) {
while (val1[i+1] == val1[i] + 500) {
total += 500
....
}
}
【问题讨论】:
-
不明白总数是多少
-
@nurandi 添加了额外的解释
标签: r