查找多对矢量化日期之间的日期是否重叠

2024-01-08

我试图找出数据集中多对日期之间是否存在日期 - 我在这里给出的长度只是一个示例,最终的数字可能更大或更小。不确定这是否是最明智的选择,但纵向工作似乎不起作用,这也是在 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。在给出的例子中,这意味着person1 和 3. 有什么想法如何做到这一点吗?这真的是低效吗?


tidyverse方法

library(tidyverse)
result <- test %>% mutate(across(ends_with("end_date"), ~ 
                         key_date <= . & key_date >= get(str_replace(cur_column(), "end", "start")),
                       .names = '{.col}_flag')) %>%
  rowwise() %>%
  mutate(Flag1 = sum(c_across(ends_with("flag")), na.rm = T)) %>%
  ungroup() %>%
  select(-ends_with("flag"))

> result$Flag1
[1] 1 0 0

完整的输出看起来像

> result
# A tibble: 3 x 11
  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` Flag1
   <int> <date>     <date>       <date>       <date>       <date>       <date>         <date>         <date>         <date>         <dbl>
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                 1
2      2 2019-06-07 2019-05-16   2019-06-07   NA           NA           2019-05-16     NA             NA             NA                 0
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         0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找多对矢量化日期之间的日期是否重叠 的相关文章

  • 如何减少 geom_text 重叠

    我的数据集包含超过 500 个对各个运动员在不同地点进行的比赛活动的观察结果 并在足球比赛期间进行记录 下面是我的数据集的示例 其中每个符号都指一个匹配活动 例如 KE踢有效 在 1 分钟时记录Defense Example data df
  • 将逗号类分配给数据框中的多个列

    我有一个data frame有几个数字列我要 就像分配 逗号 类一样 这是需要的 因为我有一个中央数据框 我使用 Openxlsx 包过滤并保存到 Excel 并且需要comma类 以便数据在excel中显示为逗号格式 这是数据框 set
  • 在 R 中打印具有长字符串的数据帧

    让我们有一列包含长字符串的数据框 df lt data frame short rnorm 10 0 1 long replicate 10 paste rep sample letters runif 1 5 8 collapse 如何打
  • 在javascript中,如何从日期字符串“yyyy-mm-dd”或时间戳中提取月份?

    我有一个数据库 其中包含某些以 json 对象形式记录的事件 每个事件都有自己的 JS 毫秒时间戳 格式为 yyyy mm dd 的日期字符串以及分钟条目 我想使用时间戳或日期字符串 以更容易的为准 作为算法的输入 该算法将计算给定月份输入
  • rvest如何通过id选择特定的css节点

    我正在尝试使用 rvest 包从网页中抓取数据 简单来说 html 代码如下所示 div class style div
  • 将数字提高到非整数幂时出现奇怪的 NaN [重复]

    这个问题在这里已经有答案了 我执行了以下代码 tau lt 0 25 h lt 0 6 n 1 5 4 5 dnorm qnorm tau 4 qnorm tau 2 qnorm tau 2 1 2 1 5 R 继续生产NaN 然而 R 实
  • 为什么 statsmodels 和 R 的逻辑回归结果不同?

    我正在尝试比较 python 的 statsmodels 和 R 中的逻辑回归实现 Python版本 import statsmodels api as sm import pandas as pd import pylab as pl i
  • R:大向量的高效迭代子集和过滤

    我想更快地执行以下操作 Logic 我有一个向量big共 4 个元素1 2 3 4 我还有一个相同长度的阈值向量1 1 3 1 4 1 5 1 我希望每个元素找到第一个元素的索引next元素高于相应的阈值 在这种情况下 我的预期输出是 2
  • dplyr / left_join 中的嵌套管链

    在尝试获取分组滞后变量的过程中 仅使用这是不可能的 lag 建议的解决方案是将数据拉出 滞后不同的行 然后重新加入它 我更喜欢在不创建中间对象的情况下执行此操作 并且希望在链中间执行此操作 然而 它似乎没有像我预期的那样工作 问题似乎是使用
  • grep() 搜索数据框的列名

    有没有更清晰 更简单 更直接 更短的方法来做到这一点 其中 df1 是数据框 names df1 grep Yield names df1 我想返回任何包含单词 yield 的列名称 Thanks grep has a value应该适用于
  • R - 在浏览器中获取帮助而不是内置的 R 帮助程序

    我见过 R help 的两种不同行为 当你输入 density例如 帮助已在您的默认浏览器中打开 帮助在内置 R 帮助程序中打开 R 中的窗口 我目前有第二种行为 但我想在浏览器中打开帮助 我可以轻松地在这两种行为之间切换吗 无需重新安装
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • R从列表中提取数据框,列名中没有前缀

    我在列表中放置了一个数据框 然后 当尝试将其提取回来时 我得到了该数据帧的所有以列表键为前缀的列名称 有没有办法完全按照最初传递的方式提取数据帧 cols lt c column1 Column2 Column3 df1 lt data f
  • 用于清除工作空间和转储存储的 R 全局函数

    我希望创建一个全局函数来清除我的工作区并转储我的内存 我将我的函数称为 cleaner 并希望它执行以下代码 remove list ls gc 我尝试在全局环境中创建该函数 但是当我运行它时 控制台仅打印该函数的文本 在我要获取的函数文件
  • 分离并重新附加“tools:rstudio”

    又名玩火 以下不起作用 rstd obj lt as environment tools rstudio detach tools rstudio attach rstd obj name tools rstudio 好吧 它似乎有效 但随
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 当每个记录都是一个段落并且某些记录有 4 个字段而其他记录有 6 个字段时,如何将文本文件读入 R

    如何读取文本文件 其中每条记录都是一个段落 每个换行符表示单独的字段 复杂的是 有些记录有 4 行 有些记录有 6 行 当字段数量的差异为 1 时 DWin 解决了我的问题 但当字段数量差异为 2 时 一切都崩溃了 你可以有一个在这里看看他

随机推荐