【发布时间】:2021-04-14 18:35:52
【问题描述】:
我有一个名为 df 的数据框,如下所示:
| Sample nr | smooth | channel | timepoint | PatientID |
|---|---|---|---|---|
| AA35456 | 24.7361 | fam | 1 | 121 |
| AA35456 | 107.3580 | fam | 1 | 121 |
| AA35456 | 72.0639 | fam | 1 | 121 |
| AA35456 | 43.8766 | vic | 1 | 121 |
| AA35456 | 2382.8700 | vic | 1 | 121 |
| AA35444 | 49.6488 | vic | 1 | 121 |
| AA35444 | 72.0639 | fam | 3 | 121 |
| AA35444 | 43.8766 | vic | 3 | 121 |
| AA35444 | 72.0639 | fam | 3 | 121 |
| AA35444 | 43.8766 | vic | 3 | 121 |
| AA35444 | 72.0639 | fam | 3 | 123 |
| AA35442 | 43.8766 | vic | 3 | 123 |
| AA35444 | 72.0639 | fam | 6 | 126 |
| AA35442 | 43.8766 | vic | 6 | 126 |
| AA35444 | 72.0639 | fam | 6 | 126 |
| AA35442 | 43.8766 | vic | 6 | 126 |
| AA35444 | 72.0639 | fam | 6 | 126 |
| AA35442 | 43.8766 | vic | 6 | 126 |
我有另一个名为 activefilter 的数据框,看起来像这样
| timepoint | PatientID |
|---|---|
| 3 | 121 |
| 6 | 124 |
| 3 | 123 |
| 6 | 123 |
数据框 df 有大约 300 万行,数据框 activefilter 中的行数取决于研究问题。
我想要做的是子集数据帧df 基于我尝试过的有源过滤器
finaldf <- df %>% filter( PatientID == activefilter$PatientID & timepoint == activefilter$timepoint)
但这并不总是有效
- 它有时会跳过患者 ID 和时间点。
- 它只获取数据框过滤值的一部分。假设我有 50 行时间点为 3 的患者 ID 121,它将只返回其中的 17 行。
这是应该在 for 循环中完成的事情吗?
【问题讨论】:
-
能否请您
dput()您的数据集。 -
这不只是
df %>% inner_join(activefilter) -
@missuse,不会在 OP 的过滤器中使用
%in%还包括具有其他人时间点的患者吗?我认为inner_join在这里更好,因为它明确地寻找两个匹配列之间的协调。 -
@missuse,这将包括不应被过滤的患者的时间点记录
-
@TarJae 由于帖子长度我不能
标签: r dataframe dplyr filtering