在R中创建给定时间段的假人的函数

在R中创建给定时间段的假人的函数,r,function,loops,period,dummy-variable,R,Function,Loops,Period,Dummy Variable,有这样一个数据帧: df中的前两列描述开始日期(月和年)和结束日期(月和年)。列名描述特定时间段的每个月和年。 我需要一个函数/循环,当给定列名的日期在前两列描述的时间段内时,在每个单元格中插入“1”或“0”,如果不在,则输入“0” 我将感谢任何帮助 你想做两件不同的事情。(a) 创建一个虚拟变量,然后(b)查看特定日期是否在间隔内 制作一个虚拟变量是最简单的,在base R中,您可以使用ifelse。例如,在iris数据帧中: iris$dummy <- ifelse(iris$Sep

有这样一个数据帧:

df中的前两列描述开始日期(月和年)和结束日期(月和年)。列名描述特定时间段的每个月和年。 我需要一个函数/循环,当给定列名的日期在前两列描述的时间段内时,在每个单元格中插入“1”或“0”,如果不在,则输入“0”


我将感谢任何帮助

你想做两件不同的事情。(a) 创建一个虚拟变量,然后(b)查看特定日期是否在间隔内

制作一个虚拟变量是最简单的,在base R中,您可以使用
ifelse
。例如,在iris数据帧中:

iris$dummy <- ifelse(iris$Sepal.Width > 2.5, 1, 0)
如果返回true,则两个间隔(一个特定月份和另一个特定月份)重叠。这不同于一个人在另一个人里面,但在你的情况下,它会起作用。使用它,您可以迭代不同的列和行,并构建虚拟变量

但在这样做之前,我建议清理您的数据,因为您当前的格式很难处理。要获得R中向量类型提供的所有幂,理想情况下,您希望每个观测值有一行,每个列有一个变量。您的数据帧似乎并非如此。请参阅“R for data Science”中的“整理数据”一章,特别是传播和收集小节:


到目前为止,您尝试过什么、测试过什么?
new_format_february_2016 <- interval(ymd('2016-02-01'), ymd('2016-03-01') - dseconds(1))
#[1] 2016-02-01 UTC--2016-02-29 23:59:59 UTC
int_overlaps(new_format_february_2016, other_interval)