我试图找出数据集中多对日期之间是否存在日期 - 我在这里给出的长度只是一个示例,最终的数字可能更大或更小。不确定这是否是最明智的选择,但纵向工作似乎不起作用,这也是在 SPSS 中处理重叠日期和日期对的一种非常常见的方法,其中您可以对多个变量进行数字化,因为日期在这里并且它通过每个编号的“集合”来给您一个响应。
这是一个示例数据集:
person key_date 1_end_date 2_end_date 3_end_date 4_end_date 1_start_date 2_start_date 3_start_date 4_start_date
1 1 2019-09-30 2019-05-23 2019-09-30 2016-07-22 <NA> 2019-05-23 2019-09-30 2016-07-22 <NA>
2 2 2019-06-07 2019-05-16 2019-06-07 <NA> <NA> 2019-05-16 <NA> <NA> <NA>
3 3 2020-03-09 2016-06-02 2019-08-09 2020-05-27 2020-02-12 2016-06-02 2019-08-09 2020-05-27 2020-03-09
test <- structure(list(person = 1:3, key_date = structure(c(18169, 18054,18330), class = "Date"), `1_end_date` = structure(c(18039, 18032,16954), class = "Date"), `2_end_date` = structure(c(18169, 18054,18117), class = "Date"), `3_end_date` = structure(c(17004, NA,18409), class = "Date"), `4_end_date` = structure(c(NA, NA, 18304), class = "Date"), `1_start_date` = structure(c(18039, 18032,16954), class = "Date"), `2_start_date` = structure(c(18169,NA, 18117), class = "Date"), `3_start_date` = structure(c(17004,NA, 18409), class = "Date"), `4_start_date` = structure(c(NA,NA, 18330), class = "Date")), row.names = c(NA, 3L), class = "data.frame")
预期的输出只是一个二进制标志来指示key_date
存在于任意一对之间start_date
and end_date
。在给出的例子中,这意味着person
1 和 3. 有什么想法如何做到这一点吗?这真的是低效吗?