为日期范围内的观察创建虚拟变量
Posted
技术标签:
【中文标题】为日期范围内的观察创建虚拟变量【英文标题】:Creating a Dummy Variable for Observations within a date range 【发布时间】:2014-02-23 05:07:31 【问题描述】:我想创建一个新的虚拟变量,如果我的观察结果在某个日期范围内,则打印 1,否则打印 0。我的数据集是 10 年范围内的政治捐款列表,我想创建一个虚拟变量来标记捐款是否在特定日期范围内进行。我正在查看 10 个日期范围。
有谁知道这样做的正确方法是创建一个循环吗?我一直在看这个问题,看起来很相似,但我认为我的问题会更复杂一点:Creating a weekend dummy variable
例如,我有一个变量列出了记录捐款的日期,我想创建一个虚拟变量来显示这笔捐款是否来自预算危机。因此,如果从 2010 年 2 月 1 日到 2010 年 3 月 25 日发生预算危机,从 2009 年 6 月 5 日到 2009 年 7 月 30 日又发生一次预算危机,理想情况下,变量应该如下所示:
投稿日期.......预算危机 2009-06-01.......................0 2009-06-06.......................1 2009-07-30.......................1 2009-07-31.......................0 2010-01-31.......................0 2010-03-05.......................1 2010-03-26.......................0
再次感谢您的帮助!
【问题讨论】:
请分享一小部分日期样本、条件形式和预期输出样本。 这样的? ***.com/questions/9500114/… 信息不足。虽然您的问题看起来很简单,但您选择的数据类型等可能存在隐藏的复杂性。请至少提供一个您正在使用的数据的小示例。是数据框吗? 感谢 Roman 提供的链接。我认为这个例子是正确的。我添加了一个示例,希望能让事情更清楚。 【参考方案1】:这似乎是使用match(...)
函数的%in%
语法的好机会。
dat <- data.frame(ContributionDate = as.Date(c("2009-06-01", "2009-06-06", "2009-07-30", "2009-07-31", "2010-01-31", "2010-03-05", "2010-03-26")), CrisisYes = NA)
crisisDates <- c(seq(as.Date("2010-02-01"), as.Date("2010-03-25"), by = "1 day"),
seq(as.Date("2009-06-05"), as.Date("2009-07-30"), by = "1 day")
)
dat$CrisisYes <- as.numeric(dat$ContributionDate %in% crisisDates)
dat
ContributionDate CrisisYes
1 2009-06-01 0
2 2009-06-06 1
3 2009-07-30 1
4 2009-07-31 0
5 2010-01-31 0
6 2010-03-05 1
7 2010-03-26 0
【讨论】:
以上是关于为日期范围内的观察创建虚拟变量的主要内容,如果未能解决你的问题,请参考以下文章
R:如何在 data.table 中标记特定时间范围内的观察结果?