我想要创建一个新的虚拟变量,如果我的观察值在某一组日期范围内,则打印1,如果不是,则打印0。我的数据集是一个10年的政治捐款列表,我想做一个虚拟变量来标记捐款是否在一定的日期范围内进行。我有10个约会范围。
有没有人知道这样做的正确方法是创建一个循环?我一直在研究这个问题,这个问题看起来很相似,但我认为我的问题会更复杂一些:Creating a weekend dummy variable
举个例子,我有一个可变的列表日期来记录缴款,我想创建一个虚拟模型来显示这种缴款是否是在预算危机期间产生的。因此,如果从2010-2-01年到2010-03-25年间出现预算危机,从2009-06-05到2009-07-30又发生了一次预算危机,那么这个变量最好是这样:
贡献Date.......Budget危机
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
再次感谢你的帮助!
发布于 2014-02-28 00:25:50
这似乎是使用%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
https://stackoverflow.com/questions/21964441
复制相似问题