[英]Combine two vectors into one in R
我想通过以下逻辑将两个字符向量合并为一个:
A <- c("005", "NA", "100", "NA")
B <- c("005", "NA", "NA", "257")
C <- c("005", "NA", "100", "257")
假设我有向量A
和B
并且我想以得到向量C
的方式合并它们,我该如何实现?
我们可以使用dplyr
包中的coalesce
,但请注意,您需要将“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
replace(A, A == "NA", B[A == "NA"])
#[1] "005" "NA" "100" "257"
或者
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)
你可以做
C <- A
C[A == "NA"] <- B[A == "NA"]
C
#[1] "005" "NA" "100" "257"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.