我想通过以下逻辑将两个字符向量合并为一个:
A <- c("005", "NA", "100", "NA")
B <- c("005", "NA", "NA", "257")
C <- c("005", "NA", "100", "257")
假设我有向量A
和B
,并且我想以合并向量C
的方式合并它们,如何实现呢?
答案 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"
,请更改
A == "NA"
至is.na(A)
temp != "NA"
至!is.na(temp)
答案 1 :(得分:2)
我们可以使用coalesce
中的dplyr
,但请注意,您需要将{NA}替换为NA
,因为在R中它们是不同的。在这里,我将A
和B
都转换为数字以实现此目的。
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"