将行值添加到R中的上一个行值

时间:2015-10-09 12:24:50

标签: r

我有一个非常基本的问题,因为我对R相对较新。我想知道如何在列中添加一个值到前一个值并重复向下一列1000的值?注意,我不想要累积总和,因此cumsum函数没用。假设我的列名为WD,我想将WD1添加到WD2,将WD2添加到WD3,将WD3添加到WD4等,并将这些总和作为新列输出。有一个简单的方法吗?非常感谢。

可重现的例子:

set.seed(111)
df1 <- data.frame(WD=sample(10))

#result
df1
   WD new
1   6   6
2   7  13
3   3  10
4   4   7
5   8  12
6  10  18
7   1  11
8   2   3
9   9  11
10  5  14

2 个答案:

答案 0 :(得分:3)

我们将当前行(WD[-nrow(df1)])添加到下一行(WD[-1L])并与第一个元素连接以创建列。

df1$newColumn <- with(df1, c(WD[1],WD[-1]+WD[-nrow(df1)]))

答案 1 :(得分:2)

另一种选择,使用lag()中的dplyr

library(dplyr)
mutate(df1, new = WD + lag(WD, default = 0))

或使用shift()中的data.table

library(data.table)
setDT(df1)[, new := WD + shift(WD, fill = 0)]

注意:默认类型shift()为&#34;滞后&#34;。另一个可能的值是&#34;引导&#34;。

给出了:

#   WD new
#1   6   6
#2   7  13
#3   3  10
#4   4   7
#5   8  12
#6  10  18
#7   1  11
#8   2   3
#9   9  11
#10  5  14