如何解决R-在两个不同的数据帧中检查相同的值
我有一个看起来像这样的数据框(数据)。用于测试COVID的数据框:
x = np.arange(0,11)
y = 'a c c b c b b b b c b'.split()
y_order = sorted(set(y))
len_of_y_ticks = len(set(y))
y = list(map(lambda x: ord(x)-97,y))
plt.plot(x,y)
plt.yticks(np.arange(4),y_order)
plt.show()
然后我有另一个看起来像这样的数据框(data_new),这只是阳性结果
> ID DATE Result
1 1/11/2020 POSITIVE
2 1/11/2020 NEGATIVE
2 2/11/2020 POSITIVE
3 2/11/2020 POSITIVE
3 3/11/2020 NEGATIVE
原始数据集非常大。 我的愿望是找到一个将使用“ data_new”并在“ data”中查找的代码,以查找相同的ID是否出现在“ data”中,并且在阳性结果日期之前进行了测试。
有可能吗?
解决方法
这项工作:
library(dplyr)
library(tidyr)
df2 %>% left_join(df1,by = 'ID') %>% filter((DATE.x > DATE.y) & Result.x == 'POSITIVE')
# A tibble: 1 x 5
ID DATE.x Result.x DATE.y Result.y
<dbl> <date> <chr> <date> <chr>
1 2 2020-11-02 POSITIVE 2020-11-01 NEGATIVE
使用的数据:
df1
# A tibble: 5 x 3
ID DATE Result
<dbl> <date> <chr>
1 1 2020-11-01 POSITIVE
2 2 2020-11-01 NEGATIVE
3 2 2020-11-02 POSITIVE
4 3 2020-11-02 POSITIVE
5 3 2020-11-03 NEGATIVE
df2
# A tibble: 3 x 3
ID DATE Result
<dbl> <date> <chr>
1 1 2020-11-01 POSITIVE
2 2 2020-11-02 POSITIVE
3 3 2020-11-02 POSITIVE
,
由于您具有相似的列名,因此我建议在加入数据之前重命名列名。然后,您可以为每个ID
检查他们是否在阳性结果日期之前进行了测试。
library(dplyr)
df1 %>%
rename(test_date = DATE) %>%
left_join(df2 %>%
rename(positive_date = DATE,final_result = Result),by = 'ID') %>%
mutate(across(c(test_date,positive_date),lubridate::dmy)) %>%
group_by(ID) %>%
summarise(test_before = any(first(positive_date) > test_date))
# ID test_before
# <int> <lgl>
#1 1 FALSE
#2 2 TRUE
#3 3 FALSE
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。