首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在事件之前和之后定义虚拟对象

在事件之前和之后定义虚拟对象
EN

Stack Overflow用户
提问于 2019-03-20 23:49:36
回答 1查看 121关注 0票数 0

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

我有以下数据结构:

代码语言:javascript
复制
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- 10“列中创建值1,当事件发生在t=0之前10个月等于1(事件发生),依此类推,直到t+10。

EN

回答 1

Stack Overflow用户

发布于 2019-03-21 00:17:32

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

代码语言:javascript
复制
# 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55264938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档