我在使用 dplyr 加入数据帧时遇到了一些麻烦,我想忽略 NA。
我拥有的数据很大,但简化版本如下所示:
id <- c("id1", "id2", "id3", "id4")
A <- c("E", "F", "G", NA)
B <- c("T", NA, "N", "T")
C <- c(NA, "T", "U", NA)
df <- data.frame(A, B, C)
id A B C
1 id1 E T NA
2 id2 F NA T
3 id3 G N U
4 id4 NA T NA
我有一个想与 df 匹配的条目,例如:
df2 <- data.frame(A = "E", B = "T", C = "M")
A B C
1 E T M
因此,我想从 df 中获取与 df2 匹配的所有行,但应该忽略 NA。所以结果应该是这样的:
id A B C
1 id1 E T NA
2 id4 NA T NA
我试图用 semi_join 做到这一点,但到目前为止它没有工作:
result <- df %>%
group_by(n = seq(n())) %>%
do(modify_if(., is.na, ~NULL) %>%
semi_join(df2, by = c("A", "B", "C"))) %>%
ungroup %>%
select(-n)
结果是:
Error: `by` can't contain join column `C` which is missing from LHS
Call `rlang::last_error()` to see a backtrace
谁知道答案?