【发布时间】:2016-02-08 20:34:06
【问题描述】:
我在这里搜索类似的问题,但找不到答案。请你能帮我完成这个任务。我有一张表,其中包含超过 10,000 名患者的大量患者记录数据集,而我还有一张仅包含 689 名患者的表。我想过滤大表以仅在第二个表中保留与患者相关的记录。然后创建一个将两个表分组的新表,这样我就得到了三个表(两个过滤表和一个合并表)。
============================= 我现在拥有的=============== ======
表 1(相关患者):
ID | PatientID | Record1 | Record2 | Record3
--------------------------------------------------------
1 | 7366 | 3 | 1 | 1
2 | 7362 | 3 | 1 | 1
3 | 7361 | 3 | 1 | 1
4 | 7360 | 3 | 1 | 1
5 | 7363 | 3 | 1 | 1
表 2(所有患者):
ID | PatientID | Blood | SomeRecord | Foo
--------------------------------------------------------
1 | 7316 | 06668 | 21/08/2015 | 1
2 | 7302 | 08677 | 21/08/2015 | 3
3 | 7341 | 07787 | 21/08/2015 | 2
4 | 7340 | 08977 | 21/08/2015 | 1
5 | 7313 | 07887 | 21/08/2015 | 1
6 | 7366 | 56668 | 21/08/2015 | 1
7 | 7362 | 88677 | 21/08/2015 | 3
8 | 7361 | 77787 | 21/08/2015 | 2
9 | 7360 | 98977 | 21/08/2015 | 1
10 | 7363 | 87887 | 21/08/2015 | 1
我想根据表 1 的患者 ID 过滤表 2。将 1 和 2 组合到一个新表中。
============================= 期望输出================ =====
表 2(现在过滤的所有患者):
ID | PatientID | Blood | SomeRecord | Foo
--------------------------------------------------------
6 | 7366 | 56668 | 21/08/2015 | 1
7 | 7362 | 88677 | 21/08/2015 | 3
8 | 7361 | 77787 | 21/08/2015 | 2
9 | 7360 | 98977 | 21/08/2015 | 1
10 | 7363 | 87887 | 21/08/2015 | 1
表 3(现在过滤所有患者并将所有记录分组):
ID |PatientID|Blood|SomeRecord|Foo|Record1|Record2|Record3
--------------------------------------------------------
6 | 7366 |56668|21/08/2015 |1 | 3 | 1 | 1
7 | 7362 |88677|21/08/2015 |3 | 3 | 1 | 1
8 | 7361 |77787|21/08/2015 |2 | 3 | 1 | 1
9 | 7360 |98977|21/08/2015 |1 | 3 | 1 | 1
10 | 7363 |87887|21/08/2015 |1 | 3 | 1 | 1
【问题讨论】:
-
我相信您正在寻找的词汇是反加入。
-
我认为您想使用两个字段加入对吗?
final_data<-merge(table2, table1, by =c("PatientID", "ID"), all.y = T)
标签: r filter group-by filtering grouping