R语言实现数据框列第n与n-1个元素差值计算生成新列
解决方案
直接使用R内置的diff()函数即可实现需求,完整代码如下:
# 构建原始数据集 year <- c(0,1,2,3,4,5,6,7,8) total <- c(4462,8233,8233,8631,8631,9016,9016,9420,9494) df <- data.frame(year, total) # 计算生成new列 df$new <- c(df$total[1], diff(df$total))
逻辑说明
diff(x)函数的作用是计算向量x中相邻元素的差值,默认计算规则是x[n] - x[n-1],返回结果长度比原向量短1位,正好对应示例里从第二个位置开始的3771、0、398...这类差值- 因为要求new列第一个值等于total列的第一个元素,所以直接把
df$total[1]拼在diff计算结果的最前面,就能得到长度和原数据框匹配的新列。
运行后输出的最终结果和预期完全一致:
> df year total new 1 0 4462 4462 2 1 8233 3771 3 2 8233 0 4 3 8631 398 5 4 8631 0 6 5 9016 385 7 6 9016 0 8 7 9420 404 9 8 9494 74
内容的提问来源于stack exchange,提问作者melange164
相关产品推荐
相关产品推荐

