在 R 中使用 data.table 为每个观察创建 n+1 个变量?

时间:2021-07-19 15:39:49

标签: r algorithm data.table panel-data

我想在下面的数据表中添加一个变量,根据year按时间顺序计算一个ID被观察到的第n^次? (即对于某个 ID 的每一行,新变量增加 +1)。 这是我正在处理的面板数据表示例:

DT <- data.table("ID"=c(1,1,1,1,2,2,3,3,3),
  "year"=c(2005,2006,2007,2008,2014,2015,2008,2009,2010))

ID, year
1, 2005
1, 2006
1, 2007
1, 2008
2, 2014
2, 2015
3, 2008
3, 2009
3, 2010

这是带有新变量 crop 的所需输出:

ID, year, crop
1, 2005, 1
1, 2006, 2
1, 2007, 3
1, 2008, 4
2, 2014, 1
2, 2015, 2
3, 2008, 1
3, 2009, 2
3, 2010, 3

这可以使用 data.table 吗?

2 个答案:

答案 0 :(得分:1)

您可以使用 rleidby

DT[,crop:=rleid(year),by=ID][]

   ID year crop
1:  1 2005    1
2:  1 2006    2
3:  1 2007    3
4:  1 2008    4
5:  2 2014    1
6:  2 2015    2
7:  3 2008    1
8:  3 2009    2
9:  3 2010    3

答案 1 :(得分:1)

我们可以使用 -exec

rowid
相关问题