【发布时间】:2021-11-22 18:48:22
【问题描述】:
我有两个数据框,但无法根据另一个数据框的值进行过滤。
例子:
df1 有一堆列,但 A 列是最重要的,因为它对应于 df2 中的值。 A 列如下所示:
| A |
|---|
| 1 |
| 5 |
| 1 |
| 5 |
| 1 |
df2 看起来像这样:
| A | B |
|---|---|
| 1 | 0.92 |
| 5 | 0.02 |
| 1 | 0.18 |
| 5 | 0.87 |
| 1 | 0.46 |
对于 df1 中每一行中的 A 值,我想找到 B(在 df2 中)高于 0.5 的次数除以该行的 A 值出现在 df2 中的次数。所以在 df1 中,我想要一个名为 C 的新列,在本例中如下所示:
| C |
|---|
| 0.33 |
| 0.5 |
| 0.33 |
| 0.5 |
| 0.33 |
我的尝试代码如下:
df1$C <- (df2 %>% filter(A == df1$A & B > 0.5) %>% summarize(n()))/(df2 %>% filter(A == df1$A) %>% summarize(n()))
如果我尝试这样做,但将 df1$A 替换为任意数字而不是参考,它工作正常。但是,当我尝试对 df1 中的每一行使用引用时,我收到一条错误消息。
【问题讨论】: