繁体   English   中英

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

[英]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") 

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

我们可以使用dplyr包中的coalesce ,但请注意,您需要将“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
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" ,然后改变

  1. A == "NA"is.na(A)
  2. 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.

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