根据年份 R 创建"时间段"索引变量



我希望构造一个变量,为每个ID/year组合分配一个ID值,以便新变量计算时间段,而不是简单地列出年份。

这就是我想要的:

<表类> id 年 time_period tbody><<tr>120011120022120043220051220062320021320052420041420082420093420114

解决方案是仅按id分组,然后创建序列,如果您可以将年份转换为factor,然后转换为整数/数字:

df %>% 
group_by(id) %>% 
mutate(time_period_factor = as.integer(factor(year, levels = sort(unique(year)))))
# A tibble: 12 x 4
# Groups:   id [4]
#      id  year time_period time_period_factor
#   <dbl> <dbl>       <dbl>              <int>
# 1     1  2001           1                  1
# 2     1  2002           2                  2
# 3     1  2004           3                  3
# 4     2  2005           1                  1
# 5     2  2006           2                  2
# 6     3  2002           1                  1
# 7     3  2005           2                  2
# 8     4  2004           1                  1
# 9     4  2008           2                  2
#10     4  2009           3                  3
#11     4  2011           4                  4
#12     4  2009           3                  3

一个站点重复年份的新数据

df <- structure(list(id = c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4,4), year = c(2001, 
2002, 2004, 2005, 2006, 2002, 2005, 2004, 2008, 2009, 2011,2009), 
time_period = c(1, 2, 3, 1, 2, 1, 2, 1, 2, 3, 4,3)), class = "data.frame", row.names = c(NA, 
                                -12L))