我的数据框显示如下:
> df
c1 c2 c3 c4
1 1 0 1 2
2 2 1 4 3
3 3 3 5 4
4 4 3 6 5
5 5 4 7 7
我正在尝试对数据框进行子集化,以逐行返回重复元素。即返回行号和在该行中具有重复的相应元素。像这样:
index duplicates
1 1
3 3
5 7
我尝试过使用以下代码行:
dfc <- apply(df, 1, function(x) duplicated(x))
dfc <- t(dfc)
df[dfc]
[1] 3 1 7
我想让重复元素的相应行索引也返回。特别是在两个以上的元素连续重复的情况下。
答案 0 :(得分:0)
基于该示例(假设每行只有一对副本)。我们使用apply
和MARGIN=1
为每行提取重复元素。输出将为list
,因为有些行没有任何重复项且长度为0.从list
输出,通过获取'l1'的'索引'来创建data.frame
'length
不等于0,unlist
'l1'的'重复'。
l1 <- apply(df, 1, FUN = function(x) x[duplicated(x)])
data.frame(index = which(lengths(l1)!=0), duplicates = unlist(l1))
# index duplicates
#1 1 1
#3 3 3
#5 5 7