【问题标题】:Define dummies before and after an event在事件之前和之后定义假人
【发布时间】:2019-03-20 15:49:36
【问题描述】:

我有一个发生在 t=0 的事件。我想为 t-10, t-9,..., t-2, t-1, t=0, t+1, t+2 ... t+10 创建假人。

我有以下数据结构:

Date     t=0    t-10     t-9 ... t+10
2015-1     0       0       0       0  
2015-2     0       0       0       0
2015-3     0       0       0       0
2015-4     1       0       0       0
 ...       0       0       0       0 
2017-12    0       0       0       0

当事件发生在 t=0 之前 10 个月等于 1(事件发生)时,我想在“t-10”列中创建值 1,依此类推,直到 t+10。

【问题讨论】:

  • 您的自然语言描述不清楚。这种情况下的“正确”答案是什么?

标签: r time dummy-variable economics


【解决方案1】:

这是一种方法。它并不优雅,但它完成了工作:

# generate sample date data to work with
df <- data.frame(
    date = seq(from=as.Date("2015-01-01"), to=as.Date("2015-02-28"), by="day"),
    stringsAsFactors = FALSE
)

# identify the event of interest
event <- as.Date("2015-01-20")

# create a counter for days before/after event
diff <- df$date - event
df$diff <- ifelse(abs(diff) > 10, -999, paste0("t0", diff))

# turn counter into a set of dummy variables
df <- cbind(df, model.matrix( ~ factor(df$diff)))

# clean up by dropping intercept, and reordering and renaming dummies
df$`(Intercept)` <- NULL
df <- df[ , c(1:2, 4, 12:5, 3, 13:14, 16:23, 15)]
names(df)[3:23] <- c( paste0("tm", 10:1), "te0", paste0("tp",1:10))

我不喜欢 -+ 在变量名中签名,所以我将 t-8 命名为 tm8 并将 t+3 命名为 tp3

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    相关资源
    最近更新 更多