将两个向量组合成R中的一个

问题描述 投票:2回答:3

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

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

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

让我们说我有矢量AB,我想以这样的方式合并它们,我得到矢量C,我怎么能实现这一点?

r vector merge character missing-data
3个回答
2
投票

我们可以使用来自coalescedplyr,但请注意你需要将“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
投票

你可以做到

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

2
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.