【发布时间】:2023-01-28 00:20:53
【问题描述】:
我查看了一些解决方案,但未能找到任何包含 ID 多次出现的观察结果的内容。我的数据在数据框 1 (df1) 中看起来像这样
Name <- c("Doe, John","Doe, John","Doe, John", "Doe, Jane", "Doe, Jane","Doe, Jane","Parker, Peter","Parker, Peter","Parker, Peter", "Stark, Tony","Stark, Tony","Stark, Tony")
Accession <- c(123, 234, 345, 456, 567, 678, 789, 8910, 1023, 1134, 1567, 1769)
MRN <-c(55555, 55555, 55555, 66666, 66666, 66666, 77777, 77777, 77777, 88888, 88888, 88888)
Collected <-c("2022-02-05", "2022-02-06", "2022-01-07", "2022-01-08", "2022-01-09", "2022-01-10", "2022-01-11", "2022-02-12", "2022-01-13", "2022-01-04", "2022-01-15", "2022-01-16")
Result <-c("Detected", "Detected", "Detected", "Detected", "Detected","Detected", "Detected", "Detected", "Detected", "Detected", "Detected", "Detected")
df1 <- data.frame(Name, Accession, MRN, Collected, Result)
数据帧 2 (df2) 的数据如下所示
Name <- c("Doe, John","Doe, John","Doe, John", "Doe, Jane", "Doe, Jane","Doe, Jane","Parker, Peter","Parker, Peter","Parker, Peter", "Stark, Tony","Stark, Tony","Stark, Tony")
Accession <- c(123, 234, 345, 456, 567, 678, 789, 8910, 1023, 1134, 1567, 1769)
MRN <-c(55555, 55555, 55555, 66666, 66666, 66666, 77777, 77777, 77777, 88888, 88888, 88888)
Collected <-c("2022-01-22", "2022-01-20", "2022-01-07", "2022-01-28", "2022-01-12", "2022-01-15", "2022-01-17", "2022-01-31", "2022-01-16", "2022-01-20", "2022-01-25", "2022-01-26")
Result <-c("Presumptive", "Presumptive", "Presumptive", "Presumptive", "Presumptive","Presumptive", "Presumptive", "Presumptive", "Presumptive", "Presumptive", "Presumptive", "Presumptive")
df2 <- data.frame(Name, Accession, MRN, Collected, Result)
我想通过 df2 对 df1 进行子集化,并将收集日期与 df2 中的收集日期相差 +/- 7 天的所有观察结果保留在 df1 中。我的问题是,即使 MRN 重复,我也想要所有观察结果。我希望它看起来像这样
Name Accession MRN Collected Result
Doe, John 345 55555 2022-01-07 Detected
Doe, Jane 456 66666 2022-01-08 Detected
Doe, Jane 567 66666 2022-01-09 Detected
Doe, Jane 678 66666 2022-01-10 Detected
Parker, Peter 789 77777 2022-01-11 Detected
Parker, Peter 1023 77777 2022-01-13 Detected
Stark, Tony 1567 88888 2022-01-15 Detected
Stark, Tony 1769 88888 2022-01-16 Detected
在基于任何观察的 +/- 7 天的最终数据中,Doe、John(123 和 234)、Parker、Peter(8910)和 Stark、Tony(1134)的观察将被排除在外,因为它们不会出现在大体时间。
【问题讨论】:
-
加入数字 456 不在 +-7 天内,仍然出现在您的预期输出中。那是想要的吗?
-
@AndreWildberg 其中一项观察结果在 +/- 7 天内。我很抱歉,也许我没有说清楚。我想保留任何观察,只要它是从任何实例的收集日期起 +/- 7 天(基于 MRN)。
-
好的,但是,345 不是在 234 (2022-01-07 - 2022-01-10) 内吗?
-
@AndreWildberg 我已经对 df1 的日期进行了编辑。谢谢!
-
K,我在答案中包含了新数据。
标签: r join dplyr tidyverse subset