确定R中多列中具有重复值的行号?

时间:2016-03-29 10:32:33

标签: r duplicates row identify

我的数据集如下:

id  1   2   3   4   5
v1  1   1   0   13  14
v2  1   2   0   13  2
v3  1   12  0   13  5

我在此处表示时已转置它,否则第一列是数据集的列名

现在,我想识别在v1到v3的所有列中都有重复值的ID,然后标记这些ID。

因此输出如下:

id  1   2   3   4   5
v1  1   1   0   13  14
v2  1   2   0   13  2
v3  1   12  0   13  5
flag 1  0   1   1   0

我尝试过各种各样的东西,但却无法得到这个结果。我可以通过总结和应用循环来做到这一点,但这需要花费很多时间,因为我的数据集非常庞大。

如果你能用一些简单的方法帮我解决这个问题,我将非常感激。

2 个答案:

答案 0 :(得分:2)

我们可以使用rowSums

df1$flag <- +(rowSums(df1[,2]==as.matrix(df1[-1]))==(ncol(df1)-1))
df1$flag
#[1] 1 0 1 1 0

或稍快的选项

 +(Reduce(`&`, lapply(df1[-1],`==`, df1[,2])))

答案 1 :(得分:1)

一种可能性在于检查每行中的值是否存在任何差异:

df1$flag <- +!apply(df1[-1],1,var)
#  id v1 v2 v3 flag
#1  1  1  1  1    1
#2  2  1  2 12    0
#3  3  0  0  0    1
#4  4 13 13 13    1
#5  5 14  2  5    0