r - 用数据帧中的值替换向量的元素

标签 r dataframe vector

我需要替换与 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 中,您可以使用当前的方法,但使用 ifelseNA 替换为 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/

相关文章:

java - 在java中按角度和轴旋转 vector

r - 比较 R 中的两个数据帧对象是否相等?

python - Pandas to_csv 仅保存上次运行脚本的数据。如何创建一个大表来保存所有模拟?

r - 列表中的模型无法预测

r - 控制轴标签位置与轴平行的最佳方法

scala - 删除 Spark DataFrame 的第一行

c++ - vector 作为函数的参数 (int**)

C++——选择一组特征

R : write. dbf() 更改了我的数据框列的名称

r - 在 R 中,如何在另一个函数中使用引用函数?