包括特定时间段 R 的趋势变量
Include trend variable from certain time period R
我已经搜索了一段时间,但我没有找到如何在 R 中执行以下操作:
我有 600 个面板数据集,其中包含一个标识横截面的变量 (group
)、时间 (time
) 和一个虚拟变量 (dummy
)从某个时间段开始,值为 1。这个时间段因我拥有的多个文件而异。换句话说,在我所有的文件中,从 dummy 上的 period 取值 1 的时间总是不同的(可以是 36,37,38,320,...)。 dummy 取 1 的时间在每个文件中的组中始终相同。
我需要添加另一个变量 (trend
),它是一个新的趋势变量,从时刻 (time
) 开始等于 1,而 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
这是 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。
我已经搜索了一段时间,但我没有找到如何在 R 中执行以下操作:
我有 600 个面板数据集,其中包含一个标识横截面的变量 (group
)、时间 (time
) 和一个虚拟变量 (dummy
)从某个时间段开始,值为 1。这个时间段因我拥有的多个文件而异。换句话说,在我所有的文件中,从 dummy 上的 period 取值 1 的时间总是不同的(可以是 36,37,38,320,...)。 dummy 取 1 的时间在每个文件中的组中始终相同。
我需要添加另一个变量 (trend
),它是一个新的趋势变量,从时刻 (time
) 开始等于 1,而 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
这是 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。