我需要替换与 R 数据框中特定列的元素相匹配的向量元素。 可重现的示例:
a<-c("A","B","C","D")
b<-data.frame(col1=c("B","C","E"),col2=c("T","Y","N"))
我需要获得以下向量:
new<-c("A","T","Y","D")
我尝试的是:
new <- a
new <- b$col2[match(a, b$col1)]
它进行替换,但将不匹配的元素转换为 NA。 任何帮助表示感谢
最佳答案
您可以从 a
创建一个 data.table,然后仅更新与 b
连接时匹配的行。
library(data.table)
setDT(b)
data.table(a)[b, on = .(a = col1), a := i.col2][]
# a
# 1: A
# 2: T
# 3: Y
# 4: D
在基础 R 中,您可以使用当前的方法,但使用 ifelse
将 NA
替换为 a
的元素
temp <- as.character(b$col2[match(a, b$col1)])
ifelse(is.na(temp), a, temp)
# [1] "A" "T" "Y" "D"
关于r - 用数据帧中的值替换向量的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58100572/