r - 如何通过另一个数据帧中的两个条件对数据帧进行子集化
问题描述
我有两个数据框。
ID Date
1 1999-01-01
1 2000-01-01
1 2001-01-01
2 1999-01-01
2 2000-01-01
3 1998-01-01
3 1999-01-01
4 2000-01-01
和
ID Date
1 1999-03-01
2 2000-01-01
3 1998-01-01
我的目标是在第二个数据框中按 ID 对第一个数据框进行子集化。然后在ID的每个子组中,我只选择不早于第二个数据框中的日期的日期。例如,我只选择了 ID 1 的第二和第三行,因为它们的 Date 在第二个数据框中不早于 1999-03-01。我想要的结果是
ID Date
1 2000-01-01
1 2001-01-01
2 2000-01-01
3 1998-01-01
3 1999-01-01
解决方案
您可以dplyr
通过将第二个数据框连接到第一个数据框并使用过滤器来使用包来执行此操作。如果列具有相同的名称,dplyr
将在列名称上添加 .x 和 .y,因此您的代码看起来像这样。
df1 %>% inner_join(df2, by = 'ID') %>% filter(Date.x >= Date.y)
推荐阅读
- python - ValueError:尝试在python中添加两个多维数组时,无法将输入数组从形状(4,1)广播到形状(4)
- java - 改造相当于发布请求
- android - Flutter:迁移到 AndroidX 后无法生成发布 apk,相机插件出错
- python - 我在 seaborn 进口中面临这个问题:
- http-headers - openvpn http-proxy-option 标头,在服务器端做吗?
- c++ - 具有关联锁的对象或引用/指针的正确术语是什么?
- c# - 插入后 cosmos mongodb 属性中缺少属性
- qt - 保存单个字符
- bash - 检查 ip 是否存在于文件中并更新 iptables bash 脚本
- swift - Swift Realm 过滤所有具有空值的对象