在R中将两个向量合并为一个

时间:2019-03-22 16:37:45

标签: r vector merge character missing-data

我想通过以下逻辑将两个字符向量合并为一个:

A <- c("005", "NA", "100", "NA")
B <- c("005", "NA", "NA", "257")

C <- c("005", "NA", "100", "257") 

假设我有向量AB,并且我想以合并向量C的方式合并它们,如何实现呢?

3 个答案:

答案 0 :(得分:2)

replace(A, A == "NA", B[A == "NA"])
#[1] "005" "NA"  "100" "257"

OR

temp = cbind(A, B)
temp[cbind(seq_along(A),
           match(colnames(temp)[max.col(temp != "NA")], colnames(temp)))]
#[1] "005" "NA"  "100" "257"

如果您有NA而不是"NA",请更改

  1. A == "NA"is.na(A)
  2. temp != "NA"!is.na(temp)

答案 1 :(得分:2)

我们可以使用coalesce中的dplyr,但请注意,您需要将{NA}替换为NA,因为在R中它们是不同的。在这里,我将AB都转换为数字以实现此目的。

library(dplyr)

A <- c("005", "NA", "100", "NA")
B <- c("005", "NA", "NA", "257")

A <- as.numeric(A)
B <- as.numeric(B)

coalesce(A, B)
# [1]   5  NA 100 257

答案 2 :(得分:2)

你可以做

C <- A
C[A == "NA"] <- B[A == "NA"]
C
#[1] "005" "NA"  "100" "257"