我正在寻找一种方法来查找重复行的索引。 在这里搜索后我发现了这个 - Find indices of duplicated rows
看起来很不错,但我想问一下是否有办法让#c;" clump"重复行的索引在一起。我试着在评论中提出这个问题,但系统不会让我这么做。
事情是 - 我的DF中有重复的单元格。我需要知道两行的位置,其中有一个副本供我查看原始数据以及哪一行是错误的。 索引重复的简单输出意味着我仍然需要找到" twin"我自己。 任何想法?
再次,我很抱歉在提出一个新问题时,这显然是一个已经问过的问题的后续问题。答案 0 :(得分:0)
也许你想要这样的东西,使用相关问题的样本数据:
df <- data.frame(a = c(1,2,3,4,1,5,6,4,2,1))
x <- lapply(df$a, function(x) which(df$a == x))
names(x) <- df$a
> x
#$`1`
#[1] 1 5 10
#
#$`2`
#[1] 2 9
#
#$`3`
#[1] 3
#
#$`4`
#[1] 4 8
#
#$`1`
#[1] 1 5 10
#
#$`5`
#[1] 6
#
#$`6`
#[1] 7
#
#$`4`
#[1] 4 8
#
#$`2`
#[1] 2 9
#
#$`1`
#[1] 1 5 10
你也可以这样做:
df$twin <- sapply(x, toString)
# a twin
#1 1 1, 5, 10
#2 2 2, 9
#3 3 3
#4 4 4, 8
#5 1 1, 5, 10
#6 5 6
#7 6 7
#8 4 4, 8
#9 2 2, 9
#10 1 1, 5, 10
答案 1 :(得分:0)
您似乎想要一个将所有重复行组合在一起的结果。
# example: want to group based on duplicates in df$a
df <- data.frame(a = c(1,2,3,4,1,5,6,4,2,1),b=1:10,c=21:30)
do.call(rbind,lapply(which(table(df$a)>1),function(x)df[df$a==x,]))
# a b c
# 1.1 1 1 21
# 1.5 1 5 25
# 1.10 1 10 30
# 2.2 2 2 22
# 2.9 2 9 29
# 4.4 4 4 24
# 4.8 4 8 28
因此,在此示例中,df
包含3行df$a==1
,2行df$a==2
和2行df$a==4
。所有其他行都具有唯一值df$a
。这组装了一个新的数据框,只有重复的行组合在一起。
答案 2 :(得分:0)
这是我用来标记对象中所有重复项的函数:
allDup <- function (value)
{
duplicated(value) | duplicated(value, fromLast = TRUE)
}
它从正面扫描,然后从背面扫描以标记它们。