r - if else 语句使用 R 中多列中的日期和匹配值来过滤行

标签 r if-statement filter dplyr

我正在尝试使用 if else 做一个相当复杂的过滤器,但我总是在原地打转。

以下是数据示例:

individual_id born        mom_id trap_date 
        13212 2013-03-16  11926  2014-06-26
        13213 2013-03-16  11926  2013-07-23
        13214 2013-03-16  11926  2015-06-01
        13212 2013-03-16  11926  2014-06-26
        11926 2010-04-08  10422  2013-01-23
        11926 2010-04-08  10422  2013-02-01
        11926 2010-04-08  10422  2013-03-08
        11926 2010-04-08  10422  2013-03-12
        11926 2010-04-08  10422  2013-04-23
        11926 2010-04-08  10422  2013-05-01
        11926 2010-04-08  10422  2013-08-23
        11926 2010-04-08  10422  2013-09-01
        11926 2010-04-08  10422  2013-10-23
        11926 2010-04-08  10422  2013-12-01

我有一个名为 mom_id 的列,这些人也显示在 individual_id 列中。

我想删除 mom_id出生日期后 35 天或 + 70 天发生的所有 trap_date 记录, 仅当她也出现在individual_id列中。

因此,在此示例中,我想删除 2013 年 2 月 9 日 (2013-02-09) 到 5 月之间的所有 trap_date 记录/行2013 年 3 月 25 日 (2013-05-25),因为 mom_id 11926 的出生日期是 2013 年 3 月 16 日 (2013-03 -16)。

期望的结果:

individual_id born        mom_id trap_date 
        13212 2013-03-16  11926  2014-06-26
        13213 2013-03-16  11926  2013-07-23
        13214 2013-03-16  11926  2015-06-01
        13212 2013-03-16  11926  2014-06-26
        11926 2010-04-08  10422  2013-01-23
        11926 2010-04-08  10422  2013-02-01
        11926 2010-04-08  10422  2013-08-23
        11926 2010-04-08  10422  2013-09-01
        11926 2010-04-08  10422  2013-10-23
        11926 2010-04-08  10422  2013-12-01

如果有 dplyr 解决方案,我们将不胜感激,但如果此时有任何帮助,我将不胜感激!

最佳答案

我认为这符合您的要求。

mutate(df, in_individual = mom_id %in% individual_id) %>%
    filter((!in_individual) | ((born - 35 <= trap_date) & (trap_date <= born + 70)))

关于r - if else 语句使用 R 中多列中的日期和匹配值来过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68397881/

相关文章:

r - 基于向量中的搜索模式对数据框进行子集化

C#,If 语句中的否定条件是否更快?

excel - 将 'If' 公式重复到最后一行

java - Jersey 获取模板路径

r - 对齐水平 ggplot 条形图的标题、副标题和标题

r - 如何添加 ggplot2 网格线或颜色以按变量(y 轴)显示多个绘图点?

r - 树形图显示在 R 中,但不在 R-Shiny 中

ruby-on-rails - 为不同的事件运行两个不同的 after_create 语句

json - Spring Rest api 过滤响应中的字段

python - 如何在 Python 中逐行读取文件(或标准输入)而不是等待读取整个文件