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

时间:2014-02-23 05:07:32

标签: r date

我想创建一个新的虚拟变量,如果我的观察值在某个日期范围内,则打印1,如果不是,则打印0。我的数据集是10年范围内的政治捐款清单,我想制作一个虚拟变量来标记捐赠是否在某一特定日期范围内发生。我有10个日期范围。

有谁知道这样做的正确方法是创建循环吗?我一直在看这个看似相似的问题,但我认为我的问题会更复杂:Creating a weekend dummy variable

举个例子,我有一个变量列表记录了贡献被记录的日期,我想创建一个虚拟来显示这个贡献是否来自预算危机。因此,如果从2010年2月1日到2010年3月25日之间出现预算危机,从2009-06-05到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

再次感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这似乎是使用%in%函数的match(...)语法的好机会。

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