如何根据数值在不同的行下面的行中创建一个列

问题描述 投票:0回答:1

我有一个这样的数据集

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

我想使用A行的值来创建一个新的列B,这个列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),但我有点不明白。

谢谢你!我有一个这样的数据集。

r dplyr rows mutate
1个回答
2
投票

我们可以用 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)

1
投票

您可以使用 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
© www.soinside.com 2019 - 2024. All rights reserved.