Создание категориальной переменной для разрывов последовательности в R? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть фрейм данных с двумя столбцами для года и возраста, например ::10000

df <- data.frame(year = 1980:2000, age = c(40:45, 31:40, 32:36))

Мне нужно создать категориальную переменную, которая идентифицирует каждую возрастную последовательность. Это будет выглядеть примерно так:

df$seq <- as.character(c(rep(1,6), rep(2,10), rep(3,5)))

Есть идеи, как это сделать эффективно? Мне удалось создать манекен для разрывов последовательности

require(dplyr)
df <- df %>% mutate(brk = case_when(age - lag(age) != 1 ~ 1, T ~ 0) 

но я борюсь с заполнением остальных.

1 Ответ

0 голосов
/ 16 мая 2018

Вы уже почти сделали это.Вам просто нужно создать накопительную сумму (cumsum) вашего столбца brk:

df %>% mutate(brk = cumsum(case_when(age - lag(age) != 1 ~ 1, T ~ 0)))

Вы можете добавить 1 ко всему вектору, если хотите начать первую последовательность с 1 вместо 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...