Как сместить строки на переменное количество строк - PullRequest
0 голосов
/ 13 сентября 2018

С данными, как показано ниже:

data <- structure(list(seq_grp = 1:40, n_offset = c(1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 3, 2, 1, 1, 3, 2, 1, 1, 1, 1, 3, 2, 1, 1, 7, 6, 5, 
4, 3, 2, 1, 1, 9, 8, 7, 6, 5, 4, 3, 2)), row.names = c(NA, -40L
), class = c("tbl_df", "tbl", "data.frame"))

Я хотел бы создать новый столбец, в котором значения в следующих строках будут иметь значения seq_grp, но со смещением длины, определяемым n_offset,Я надеялся, что dplyr::mutate(new = dplyr::lead(seq_grp, n = n_offset)) будет работать, но lead принимает только скаляры.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Опция с dplyr

library(dplyr)
data %>%
   mutate(new_sq = seq_grp[row_number() + n_offset])
0 голосов
/ 13 сентября 2018

Это не dplyr, но с помощью baseR вы можете сделать это:

data$new_sq <- data$seq_grp[1:nrow(data) + data$n_offset]

data$new_sq

[1]  2  3  4  5  6  7  8  9 10 11 14 14 14 15 18 18 18 19 20 21 24 24 24 25 32 32 32 32 32 32 32 33 NA NA NA NA
[37] NA NA NA NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...