繁体   English   中英

合并两列中的值以覆盖R中同一行的NA

[英]Merge values from two columns to overwrite NAs in same row in R

我有两列要合并的列(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中的值。

使用dplyr

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

使用data.table:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM