合并两列中的值以覆盖R

时间:2019-07-16 18:28:12

标签: r replace merge na

我有两列要合并的列(a和b),这样“ a”仅在有NA的情况下才覆盖“ b”中的值。

基本上,我希望保留“ b”中的PAV和SAV。

我尝试了以下代码:

MergingTABLE$c <- ifelse(is.na(MergingTABLE$b), MergingTABLE$a, MergingTABLE$b)

但是它给了我数字而不是将值复制过来。

MergingTABLE <- data.frame(a = c("NOO","NOO","POR","NOO","SAV","WAT","SAV","PAV","COM","WAT"),
                          b = c(NA,NA,"PAV",NA,"SAV",NA,NA,NA,NA,NA))

我希望输出列是两者的组合,但是当a和b都具有非NA值时,使用b中的值。

2 个答案:

答案 0 :(得分:0)

使用dplyr

library(dplyr)
MergingTABLE %>% 
  mutate(c = if_else(is.na(b), a, b))

答案 1 :(得分:0)

使用data.table:

library('data.table')
setDT(MergingTABLE)
MergingTABLE[!is.na(b), c := b]
MergingTABLE[is.na(b), c := a]