r - R中的条件合并/替换

标签 r match r-faq

我有两个数据框:

df1
x1  x2
1   a
2   b
3   c
4   d


df2
x1  x2
2   zz
3   qq

我想根据 df1$x1 和 df2$x2 之间的条件匹配将 df1$x2 中的某些值替换为 df2$x2 中的值以生成:
df1
x1  x2
1   a
2   zz
3   qq
4   d

最佳答案

使用 match() ,假设 df1 中的值是唯一的。

df1 <- data.frame(x1=1:4,x2=letters[1:4],stringsAsFactors=FALSE)
df2 <- data.frame(x1=2:3,x2=c("zz","qq"),stringsAsFactors=FALSE)

df1$x2[match(df2$x1,df1$x1)] <- df2$x2
> df1
  x1 x2
1  1  a
2  2 zz
3  3 qq
4  4  d

如果值不唯一,请使用:
for(id in 1:nrow(df2)){
  df1$x2[df1$x1 %in% df2$x1[id]] <- df2$x2[id]
}

关于r - R中的条件合并/替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112260/

相关文章:

r - 如何调试 “contrasts can be applied only to factors with 2 or more levels”错误?

r - 如何按组获取汇总统计数据

在 groupby r 之后删除所有 NA 值的行

r - 获取 Xaringan 增量动画以打印为 PDF?

R:添加一列中两个数据帧的匹配向量值

python - 在 Python 中匹配字符串中的确切短语

count - 从右到左匹配计数非空白单元格

javascript - RegExp 转换军事时间 JavaScript

r - 根据值填充曲线下面积

r - 快速读取非常大的表作为数据框