37

2 つ以上の列を持つデータフレーム df があるとします。2 つ以上の列unique()の一意の組み合わせのサブセットを作成するために、または他の R 関数を使用する簡単な方法はありますか?

sqldf()簡単なクエリを使用して作成できることはわかってい"SELECT DISTINCT var1, var2, ... varN"ますが、これを行う R の方法を探しています。

データフレームに強制されたftableを試してフィールド名を使用することが思いつきましたが、データセットに存在しない組み合わせのクロス集計も取得します。

uniques <- as.data.frame(ftable(df$var1, df$var2))
4

4 に答える 4

54

unique動作するdata.frameのでunique(df[c("var1","var2")])、あなたが望むものでなければなりません。

別のオプションはpackagedistinctからです:dplyr

df %>% distinct(var1, var2) # or distinct(df, var1, var2)

ノート:

古いバージョンの dplyr ( < 0.5.0、2016-06-24 )のdistinct場合、追加の手順が必要です

df %>% select(var1, var2) %>% distinct

(または古い方法distinct(select(df, var1, var2)))。

于 2010-05-24T22:25:49.107 に答える