为日期范围内的观察创建虚拟变量

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 中标记特定时间范围内的观察结果?

如何从指令中观察服务内的简单变量更改?

如何创建一个变量并将其存储为 50 个观察值(python)?

每个 ID 按日期选择观察

从子集中选择观察值以基于 R 中的大型数据框创建新子集

观察变量并改变它