【发布时间】:2021-10-26 15:25:45
【问题描述】:
我希望构造一个变量,为每个 ID/年份组合分配一个 ID 值,以便新变量计算时间段,而不是简单地列出年份。
这就是我想要的:
| id | year | time_period |
|---|---|---|
| 1 | 2001 | 1 |
| 1 | 2002 | 2 |
| 1 | 2004 | 3 |
| 2 | 2005 | 1 |
| 2 | 2006 | 2 |
| 3 | 2002 | 1 |
| 3 | 2005 | 2 |
| 4 | 2004 | 1 |
| 4 | 2008 | 2 |
| 4 | 2009 | 3 |
| 4 | 2011 | 4 |
structure(list(id = c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4), year = c(2001,
2002, 2004, 2005, 2006, 2002, 2005, 2004, 2008, 2009, 2011),
time_period = c(1, 2, 3, 1, 2, 1, 2, 1, 2, 3, 4)), class = "data.frame", row.names = c(NA,
-11L))
我该怎么做?我更喜欢 tidyverse 解决方案,但最简单的就足够了。
更新:我尝试了以下方法:
df %>% group_by(ID, year) %>% mutate(time_period = sequence(n()))
但这并没有产生预期的结果。
谢谢!
【问题讨论】: