2

私のテスト フレームには 81,000 レコードがあり、duplicated2039 が同一の一致であることを示しています。R のデータ フレームで重複行を検索する (2 列に基づく)に対する 1 つの回答は、重複レコードだけの小さなフレームを作成する方法を提案しています。これも私にとってはうまくいきます:

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 

すべてを 1 行にまとめることができます

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 に答える