为R中的序列中断创建分类变量?

时间:2018-05-16 10:22:01

标签: r dataframe dplyr

我有一个包含年份和年龄的两列的数据框,例如:

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 :(得分:2)

你已经差不多完成了。您只需要创建cumsum列的累计总和(brk):

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

如果要从1而不是0开始第一个序列,可以向整个向量添加1。