【问题标题】:Creating n+1 variable for every observation using data.table in R? [duplicate]使用R中的data.table为每个观察创建n + 1变量? [复制]
【发布时间】:2021-09-27 06:49:51
【问题描述】:

我想在下面的数据表中添加一个变量,该变量根据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可以做到这一点吗?

【问题讨论】:

    标签: r algorithm data.table panel-data


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      我们可以使用rowid

      DT[, crop := rowid(ID)]
      

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 2021-05-05
        • 1970-01-01
        • 2023-01-13
        • 2013-12-03
        • 2020-08-23
        相关资源
        最近更新 更多