R 如何为事件发生创建持续时间假人?
我有一个面板数据集,我想将BTSCS作为一个比例风险模型和板条箱二元变量来实现,其中k_t是持续时间假人,指示自上次事件以来的周期数。例如:R 如何为事件发生创建持续时间假人?,r,R,我有一个面板数据集,我想将BTSCS作为一个比例风险模型和板条箱二元变量来实现,其中k_t是持续时间假人,指示自上次事件以来的周期数。例如: pid Conservatism year Happiness Income Unemployment Inflation k1 k2 k3 k4 k5 1 1 1990 1 1000 10 2 1 0 0 0
pid Conservatism year Happiness Income Unemployment Inflation k1 k2 k3 k4 k5
1 1 1990 1 1000 10 2 1 0 0 0 0
1 0 1991 1 2000 5 4 1 0 0 0 0
1 0 1992 2 3000 6 4 0 1 0 0 0
1 1 1993 3 1000 7 5 0 0 1 0 0
1 0 1994 3 1000 7 5 1 0 0 0 0
不清楚从
k4
到k7
。创建k1
到k3
的一种方法是:
nm1 <- paste0('k', 1:3)
df[nm1] <- Map(`==`, list(df$duration), unique(df$duration))
df[nm1] <- df[nm1]*1
df
# id y year duration k1 k2 k3
#1 1 1 1990 1 1 0 0
#2 1 0 1991 1 1 0 0
#3 1 0 1992 2 0 1 0
#4 1 0 1993 3 0 0 1
#5 1 1 1994 1 1 0 0
#6 1 0 1995 2 0 1 0
#7 1 1 1996 1 1 0 0
#8 2 1 1990 1 1 0 0
#9 2 0 1991 1 1 0 0
数据
df是的,我正在寻找。非常感谢。如何设置大N的持续时间变量?我想基于此,你只需要使用lenght命令就可以得到K:K_I…@Googme对不起,我不太明白这个问题。对于大的N
,表示如果唯一(持续时间)
有很多值,对吗?。在这种情况下,nm1我为我的表达感到抱歉。我的意思是手动设置k(k:k3)。k取决于持续时间变量。如果我的持续时间变量未知(未知,因为我无法计算每个观察值来确定大数据集中的持续时间),我必须确定我该如何确定它……但我想你刚刚给出了答案:)@Googme更好的选择是使用model.matrix
i.emodel.matrix(~0+因子(持续时间),df)
@akrun…model.matrix似乎是一个非常有用的命令。但是正如我上面提到的。如何确定Y的“持续时间”变量?你是手动设置的。我猜它将成为Happiness
专栏。是吗?保守主义是Y:)如果是这样,为什么前两行为1的k1
。另外,根据你前面的例子,我认为从1:N开始,而不是从1和一堆0开始是合乎逻辑的。我的意思是我们必须从某个地方开始。这是由于示例的局限性:第14页…是我的示例。在pdf中,持续时间列从1
开始,然后是一个序列。似乎很容易找到这些变量。时间列只是唯一的值,即nrow(df)=length(unique(df$time))
和y
有很多0。
df[nm1] <- model.matrix(~0+factor(duration), df)
df <- structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L), y = c(1L,
0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L), year = c(1990L, 1991L, 1992L,
1993L, 1994L, 1995L, 1996L, 1990L, 1991L), duration = c(1L, 1L,
2L, 3L, 1L, 2L, 1L, 1L, 1L)), .Names = c("id", "y", "year", "duration"
), class = "data.frame", row.names = c(NA, -9L))