我的数据集如下:
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
我尝试过各种各样的东西,但却无法得到这个结果。我可以通过总结和应用循环来做到这一点,但这需要花费很多时间,因为我的数据集非常庞大。
如果你能用一些简单的方法帮我解决这个问题,我将非常感激。
答案 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