R 如何为事件发生创建持续时间假人?

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

我有一个面板数据集,我想将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  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.e
model.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))