0

我已经搜索了一段时间,但我没有找到如何在 R 中执行以下操作:

我有 600 个面板数据集,其中包含一个标识横截面的变量group(这个时间段因我将拥有的多个文件而异。换句话说,在我所有的文件中,dummy 的时间段取值为 1 的时间总是不同的(可以是 36,37,38,320,...)。dummy 取 1 的时间在每个文件中的组之间始终相同。timedummy

我需要添加另一个变量 ( trend),它是一个新的趋势变量,从第一次等于 1 的时刻 ( time)dummy开始等于 1。

group   time    dummy   trend
1        36      0       0
1        37      1       1
1        38      1       2
2        36      0       0
2        37      1       1
2        38      1       2
4

1 回答 1

1

这是一个答案data.table

library(data.table)
test_dt<-data.table(group=c(rep(1,3),rep(2,3)),time=c(36:38,36:38),dummy=c(0,1,1,0,1,1))

test_dt[,trend:=cumsum(dummy),by=group] #your operation

 group time dummy trend
1:     1   36     0     0
2:     1   37     1     1
3:     1   38     1     2
4:     2   36     0     0
5:     2   37     1     1
6:     2   38     1     2

这取决于您的假人为 0/1,数据被排序,并且假人在该组中第一次变为 1 后始终为 1。

于 2016-03-21T18:42:55.637 回答