2014-12-26 33 views
-1

我正在尋找一種方法來查找重複行的索引。 搜索這裏後,我發現這 - Find indices of duplicated rows找到重複行的索引 - 跟進

看起來不錯,但我想問是否有一種方法來「重複」重複行的索引在一起。我試着在評論中問這個問題,但系統不會讓我。

事情是 - 我的DF中有重複的單元格。我需要知道這兩行的位置,在這些位置有重複的數據以供我瀏覽原始數據以及哪些數據是錯誤的。 其中索引重複的簡單輸出意味着我仍然必須自己找到「雙胞胎」。 有什麼想法?

再次,我很抱歉提出一個新的問題,當這顯然是一個已經提出的問題的後續行動。

+0

Sven的回答不會給你想要的結果嗎? –

+0

找到哪個單元格重複很好,但我需要讓它們配對,所以我可以查找它們 – isomitzi

回答

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 
+0

謝謝! 快速跟進 - 所有有雙胞胎的細胞出現兩次。 有沒有辦法解決它?也許與獨特()? – isomitzi

+0

你可以嘗試在結果數據上運行'unique'。不過,我目前無法對其進行測試。 –

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。這組裝了一個只有重複行的新數據框,並組合在一起。

0

這裏是我用來標記對象中的所有副本的功能:

allDup <- function (value) 
{ 
    duplicated(value) | duplicated(value, fromLast = TRUE) 
} 

它從正面進行掃描,然後將回到紀念他們。