1. ホーム
  2. r

[解決済み] 選択された列のみのデータフレームで一意に決まる

2023-03-21 07:44:40

質問

100列のデータフレームがあり、そのうちの2列だけを比較してユニークな行を見つけたいのです。これは簡単なことだと期待しているのですが、私はそれを動作させることができません。 unique とか duplicated のように、自分自身を表現することができます。

以下のように、私は idid2 :

data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))

id id2 somevalue
1   1         x
1   1         y
3   4         z

どちらかを取得したいと思います。

id id2 somevalue
1   1         x
3   4         z

または

id id2 somevalue
1   1         y
3   4         z

(ユニークな行のうち、どちらを残すかにはこだわりがありません)

どのように解決するのですか?

OK、重複しない列のどの値を選択しても問題ないなら、これはかなり簡単なはずです。

dat <- data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))
> dat[!duplicated(dat[,c('id','id2')]),]
  id id2 somevalue
1  1   1         x
3  3   4         z

の中は duplicated の呼び出しの中で、私は単に dat から、重複して欲しくないカラムだけを渡しているだけです。このコードでは、常に自動的に が最初に を自動的に選択します。(この場合、x)。