有更优雅的方法来查找重复记录吗?

时间:2012-11-27 23:16:22

标签: r duplicates

我的测试框中有81,000条记录,duplicated向我显示2039条是相同的匹配。 Find duplicated rows (based on 2 columns) in Data Frame in R的一个答案提出了一种仅创建重复记录的较小帧的方法。这对我也有用:

dup <- data.frame(as.numeric(duplicated(df$var))) #creates df with binary var for duplicated rows
colnames(dup) <- c("dup") #renames column for simplicity
df2 <- cbind(df, dup) #bind to original df
df3 <- subset(df2, dup == 1) #subsets df using binary var for duplicated`
但是,正如海报所指出的那样,似乎并不优雅。是否有更简洁的方法来获得相同的结果:只查看那些重复的记录?

在我的情况下,我正在处理数据,我需要弄清楚原件中是否存在重复数据,或者是否由我进行刮擦。

2 个答案:

答案 0 :(得分:2)

duplicated(df)将为您提供逻辑向量(所有值均由T / F组成),然后您可以将其用作数据框的索引。

# indx will contain TRUE values wherever in df$var there is a duplicate
indx <- duplicated(df$var)
df[indx, ]  #note the comma 

你可以把它们放在一行

df[duplicated(df$var), ]  # again, the comma, to indicate we are selected rows

答案 1 :(得分:-1)

doops <- which(duplicated(df$var)==TRUE)
uniques <- df[-doops,]
duplicates <- df[doops,]

当我尝试从数据框中删除重复的部分时,我通常使用的逻辑。