我确定这个问题已经被问过了,但是我找不到我生命中的答案。我想使用dplyr将两个小标题连接在一起。如果第二列为NA,则只需加入第一列即可。如果第二列不是NA,则连接第一列和第二列。下面的解决方案不起作用,但这是我正在尝试做的事情。
library(tidyverse)
df1 <- tibble(x = c("Name", "City", "City"), y = c("Table5", "Table1", "Table2"))
df2 <- tibble(x2 = c("Name", "City", "City"), y2 = c(NA, "Table1", "Table2"), z = c("a", "b", "c"))
joined_data <- if (is.na(df2$y2)) {
df1 %>%
left_join(df2, by = c("x" = "x2"))
} else {
df1 %>%
left_join(df2, by = c("x" = "x2", "y" = "y2"))
}
最终结果应该是
x y z
<chr> <chr> <chr>
1 Name Table5 a
2 City Table1 b
3 City Table2 c
答案 0 :(得分:2)
我们首先找到所有NA
索引,然后将它们加入两个单独的调用中。对于非NA索引,我们在x
和y
上将它们加入,而对于NA索引,我们仅在x
上将它们加入,并在y
和{{1 }},然后使用y2
,然后将这些行绑定在一起。
coalesce