2

我的测试框架中有 81,000 条记录,并duplicated显示 2039 条是相同的匹配项。在 R 中的数据框中查找重复行(基于 2 列)的一个答案提出了一种创建仅包含重复记录的较小框架的方法。这也适用于我:

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`

但正如海报所指出的那样,它似乎不优雅。有没有更简洁的方法来获得相同的结果:只查看那些重复的记录?

就我而言,我正在处理抓取的数据,我需要弄清楚原始数据中是否存在重复项,或者是由我抓取引入的。

4

2 回答 2

2

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

# 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
于 2012-11-27T23:17:52.463 回答
-1
doops <- which(duplicated(df$var)==TRUE)
uniques <- df[-doops,]
duplicates <- df[doops,]

是我尝试从数据框中删除重复条目时通常使用的逻辑。

于 2012-11-27T23:54:19.047 回答