【发布时间】:2021-12-13 12:19:56
【问题描述】:
我有一个数据框,我想比较第 3 行中的变量,使用 if 语句和 more 或 less
假设我想将第三列中的相同值与或多或少的 0.2 进行比较
data >
NAME A B C D
first 3 2 4 5
second 1 2 3 4
third 7 7.1 7.5 6.9
four 2 1 0 5
这里是一个比较精确值的程序
for (i in 1:3) {
d <- i+1
for (j in d:4) {
if(data [3,i] == data [3,j] ){
print(paste("The columns" , colnames(data[,i]) ,"and " , colnames(data[,i]) , "are equal"))
}
}
}
在这里它会返回空值,因为程序会比较确切的值,而我想比较具有或多或少 0.2 相同值的值
我想要的结果是
the column A and B are equal
the column A and D are equal
这是因为 A(=7) + 或 - 与 B(7.1) 相同 和 D 一样 A(=7) + 或 - D (6.9)
谢谢
【问题讨论】:
-
您的数据的预期输出是什么?
-
感谢您的评论,我想比较第三行,因为您可以看到 A=7 所以它等于 B (+ ou - 0.2) 并且它与 D 相同所以结果 i想要的是,A列和B列相等,A列和D列相等,我编辑了问题,请看我添加了什么,谢谢
-
此类经常使用的问题的解决方案,1)从另一个减去一个,2)检查
abs()的值是否小于(<)您正在寻找的范围,例如0.2。例如类似abs(data [3,i] - data [3,j]) < 0.2 -
非常感谢
标签: r dataframe for-loop if-statement statistics