我有一个面板数据集,我想将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
答案 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
另一种选择是使用model.matrix
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))