用另一列R替换一列中的值

标签 r replace multiple-columns

我有两个不同维度的表,现在我想根据用户ID将值datA $ swl1替换为datB $ swl2中的值。

数据

 id swl1
 1   0.8
 2   0.7
 3   0.4
 4   0.7
 5   0.0

datB
id   swl2
 1   0.8
 3   0.6
 5   0.7

输出

datA(此处swl1被swl2中的新值替换,但并非所有id都有新值,对于没有的id,将保留原始值)
 id swl1
 1   0.8
 2   0.7
 3   0.6
 4   0.7
 5   0.7

这该怎么做?

最佳答案

您可以使用merge来匹配id,然后在swl1列中替换datB中存在的那些项:

datC <- merge(datA, datB, all.x=TRUE)
datC
##   id swl1 swl2
## 1  1  0.8  0.8
## 2  2  0.7   NA
## 3  3  0.4  0.6
## 4  4  0.7   NA
## 5  5  0.0  0.7

这与行匹配。现在,将swl1列中的那些值替换为NA列中的non-swl2值:
datC$swl1 <- ifelse(is.na(datC$swl2), datC$swl1, datC$swl2)
datC$swl2 <- NULL
datC
##   id swl1
## 1  1  0.8
## 2  2  0.7
## 3  3  0.6
## 4  4  0.7
## 5  5  0.7

关于用另一列R替换一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32239581/

相关文章:

python - 删除 Pandas 中的标点符号

javascript - jQuery 替换字符串中的 HTML

python - SQL:从可能位于另一个表中的列中获取值

r - 提取列包含 NA 值的单元格并根据结果创建新列

R 解析数据库转储以查找连接

javascript - 如何更换当前的 Angular 转发器

html - 7 Bootstrap 中的列网格在 xs 处崩溃

r - 如果变量中存在重复值,则根据其他变量保留具有最低值的行

r - data.table 的包装函数在本地环境中不起作用

python - 转换为以行作为列表的普通数据框。将行拆分为列