R - 如何比较两列以上的值

时间:2016-01-27 16:41:18

标签: r

我正在尝试编写代码来比较几列的值,而且我不提前知道我将拥有多少列。数据如下所示:

X   Val1    Val2    Val3    Val4
A   1        1        1       2
B   NA       2        2       2
C   3        3        3       3

代码应返回A行和B行的Fail,以及行C的Pass,但需要能够处理不断变化的列数。我不知道如何在没有嵌套几个for循环的情况下做到这一点,但必须有一些方法可以使用apply或sapply迭代第2列:length(df)

编辑:我想查看值(将是数字)是否相等

2 个答案:

答案 0 :(得分:3)

假设第一列被排除在比较之外并且所有其他列都没有,您可以尝试:

which(rowSums(df[,2]==df[,3:ncol(df)])==(ncol(df)-2))

答案 1 :(得分:0)

您可以将apply与自定义函数length(unique(x))一起使用来计算行2:ncol(yourDataFrame)中唯一的值数。然后,您可以将整个事件放入ifelse函数中以返回真/假列表。

ifelse(apply(df[ , 2:ncol(yourDataFrame)], MARGIN=1, function(x) length(unique(x))) == 1, TRUE, FALSE)