如果两列在 R 中匹配,则替换值

标签 r

我对 R 略知一二,但我已经有一段时间没有使用它了。对于此问题的任何帮助或提示,我将不胜感激。如果我有两列带有数值(数据框),我如何比较它们以便如果两列的第一行相等,它们中的值将替换为单词“EQUAL”或“MATCH”或“NA” ,如果它们不相等,那些特定行的值是否保持不变?我不想创建一个具有正确/不正确值的新列,我需要列数保持不变并替换其中的数据。这会是一个 if 函数吗?

我还需要第一列(即 Sample# 列)在输出中保持完全相同。

这是一个例子:

原始文件的样子(Au = 具有正确数据的列,Au_ppb = 不正确的数据):

Sample#  Au  Au_ppb  
3000    0.2  0.2    
3001    0.2  >3      
3002    0.2  0.2    
3003    0.2  0.2
3004    0.3  1.0

之后应该是什么样子:

Sample#  Au   Au_ppb 
3000    EQUAL EQUAL  
3001    0.2   >3    
3002    EQUAL EQUAL
3003    EQUAL EQUAL
3004    0.3   1.0

感谢您的帮助!

最佳答案

我们可以获得相等值的索引并将它们替换为我们首选的文本(此处为“EQUAL”)。

ind <- df$Au == df$Au_ppb
df[ind, c("Au", "Au_ppb")] <- "EQUAL"

#  Sample    Au Au_ppb
#1   3000 EQUAL  EQUAL
#2   3001   0.2     >3
#3   3002 EQUAL  EQUAL
#4   3003 EQUAL  EQUAL
#5   3004   0.3    1.0

或者单行:

df[df$Au == df$Au_ppb, c("Au", "Au_ppb")] <- "EQUAL"

关于如果两列在 R 中匹配,则替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156361/

相关文章:

database - R将向量的标签应用于数据库

r - 使用 NA 值对列进行子集化

r - 预测多个独立组的线性回归

r - 如何有效地反转整数向量?

r - 带R的点云覆盖的区域

r - R 中 For 循环的警告消息?

r - geom_raster 没有颜色渐变

r - 如何在同一数据子集上更新 `lm` 或 `glm` 模型?

r - 带有 <U+0092> Unicode 字符的字符串出现问题

r - 展平深度嵌套且格式错误的 JSON 文件