我对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
感谢您的帮助!
答案 0 :(得分:2)
我们可以得到相等值的索引,并用我们的首选文本(这里是“EQUAL”)替换它们。
app.controller('listController', ["$scope", function($scope) {
或者单行:
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
答案 1 :(得分:1)
replace(x = df,
list = cbind(which(df$Au == df$Au_ppb),
rep(c(2,3), each = length(which(df$Au == df$Au_ppb)))),
values = "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