我有一个 df ,其中每一行都是它上面行的累积总和。有没有办法从这个 df 导出原始值?
X1 X2
1 1 5
2 3 9
3 6 12
4 10 14
5 15 15
期望的输出:
X1 X2
1 1 5
2 2 4
3 3 3
4 4 2
5 5 1
谢谢
最佳答案
只需使用 diff
。假设您的数据集名为“mydf”并且您想对所有列执行此操作,请尝试:
mydf[] <- lapply(mydf, function(x) diff(c(0, x)))
mydf
# X1 X2
# 1 1 5
# 2 2 4
# 3 3 3
# 4 4 2
# 5 5 1
由于
diff
返回的 length
向量比输入小 1,因此您需要用 0
填充输入(因此也保留该列中的原始值)。正如@DavidArenburg 所提到的,您也可以轻松地将其调整为“data.table”代码,如下所示:
library(data.table)
as.data.table(mydf)[, lapply(.SD, function(x) diff(c(0, x)))]
关于反转累积总和以确定 R 中的实际值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27123763/