我对 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/