如何根据不同列中行下方行中的值创建列

How to create a column based on values in the rows below the row in a different column

我有这样的数据集

data <- data.frame(A = c(3,12,3,5,6,3,9,134,13,23))

我想使用 A 行值创建一个新的 B 列,该列基于 A 下一行。 像这样:

     A   B
1    3  12
2   12   3
3    3   5
4    5   6
5    6   3
6    3   9
7    9 134
8  134  13
9   13  23
10  23  NA

我试过使用 dplyr(即 mutate),但我有点难过。

谢谢!

我们可以使用lead

library(dplyr)
data <- data %>%
           mutate(B = lead(A))
data
#     A   B
#1    3  12
#2   12   3
#3    3   5
#4    5   6
#5    6   3
#6    3   9
#7    9 134
#8  134  13
#9   13  23
#10  23  NA

或使用 base R 删除 'A' 的第一个元素并在末尾附加 NA

data$B <- c(data$A[-1], NA)

您可以使用 tail :

data$B <- c(tail(data$A, -1), NA)
data
#     A   B
#1    3  12
#2   12   3
#3    3   5
#4    5   6
#5    6   3
#6    3   9
#7    9 134
#8  134  13
#9   13  23
#10  23  NA