Как создать столбец на основе значений в строках под строкой в ​​другом столбце - PullRequest
1 голос
/ 26 мая 2020

У меня есть такой набор данных

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), но я немного озадачен.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Мы можем использовать 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 голос
/ 26 мая 2020

Вы можете использовать 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
...