R言語

【R言語】関数uniqueを使ったデータの重複削除

  1. HOME >
  2. R言語 >

【R言語】関数uniqueを使ったデータの重複削除

スポンサーリンク

R言語でデータの重複削除を行う方法を紹介します。

重複しているデータの削除や、重複しているかを判定する関数とその使い方について解説します。

この記事では以下の内容が学べます。

ベクトルやデータフレームの重複削除、重複しているデータの判定及び取得について見ていきます。

この記事で学べる事

  • ベクトルやデータフレームの重複削除
  • 重複しているデータの取得

この記事で扱うプログラミングコードは以下からダウンロードできます。

データの重複削除

データの重複削除に用いる関数を紹介します。

ベクトルから重複している要素を削除する関数や、データが重複しているか判定する関数をまとめました。

関数unique

次の関数uniqueを用いることでデータの重複削除を行うことができます。

unique(x, incomparables = FALSE, …)

# S3 method for default
unique(x, incomparables = FALSE, fromLast = FALSE, nmax = NA, …)

# S3 method for matrix
unique(x, incomparables = FALSE, MARGIN = 1, fromLast = FALSE, …)

# S3 method for array
unique(x, incomparables = FALSE, MARGIN = 1, fromLast = FALSE, …)

uniqueの引数は以下の通りです。

関数uniqueの引数
xベクトルまたはデータフレーム、配列、NULL
imcomparables重複削除に考慮しない値。FALSEの場合、すべての値を含めて重複削除を行う。
fromLastlogical型。重複削除を後ろのほうから行うかどうか。
nmax期待される一意な値の最大値。
...他のメソッドに渡す引数。
MARGIN1で行方向について重複削除、2で列方向に重複削除を行う。

関数duplicated

関数duplicatedで重複削除したデータの順位を取得することができます。

duplicated(x, incomparables = FALSE, …)

# S3 method for default
duplicated(x, incomparables = FALSE, fromLast = FALSE, nmax = NA, …)

# S3 method for array
duplicated(x, incomparables = FALSE, MARGIN = 1, fromLast = FALSE, …)
anyDuplicated(x, incomparables = FALSE, …)

# S3 method for default
anyDuplicated(x, incomparables = FALSE, fromLast = FALSE, …)

# S3 method for array
anyDuplicated(x, incomparables = FALSE, MARGIN = 1, fromLast = FALSE, …)

duplicatedの引数は以下の通りです。

関数duplicatedの引数
xベクトルまたはデータフレーム、配列、NULL
imcomparables重複の判定の際に考慮しない値。FALSEの場合、すべての値を含めて判定を行う。
fromLastlogical型。重複の判定を後ろのほうから行うかどうか。
nmax期待される一意な値の最大値。
...他のメソッドに渡す引数。
MARGIN1で行方向について重複しているかの判定、2で列方向に判定を行う。0の場合はxと同じ次元からなる配列を返す。

実行例

データの重複削除及びデータが重複しているかどうかの判定の方法についてまとめました。

ベクトルとデータセットの重複削除の実行例をいかにまとめました。

ベクトルの重複削除

まずは次のベクトルxに対し重複削除を行う方法を紹介します。

上のようにxはA, B, Cなどの文字からなるベクトルです。

xを構成する文字、すなわちデータを構成する要素を取得するときは、重複削除が非常に便利です。

Rで重複削除を行うには次のように関数uniqueを使います。

uniqueの引数に重複削除したいデータを渡すだけです。

データが重複しているか判定したいときは関数duplicatedを用います。

重複しているデータのインデックスがTRUE、していないインデックスがFALSEであるようなlogical型のベクトルを取得することができます。

また、次のようにduplicatedによって重複削除を行うことも可能です。

データフレームの重複削除

データフレームの行・列に関して重複削除を行う方法と、行・列の各要素について重複削除を行う方法を紹介します。

行について重複削除(ベクトル単位)

次のデータフレームdataset1を例に行について重複削除する方法を解説します。

下のようにdataset1は行について同じデータを持つことが確認できます。

行方向について重複削除を行うには、次のように関数unique引数xに重複削除したいデータフレームを渡します。

関数duplicatedでも次のように行について重複削除を行うことができます。

列について重複削除(ベクトル単位)

また、次の同じ列を持つデータセットdataset2を列について重複削除を行っていきます。

列方向について重複削除を行うには、次のように関数duplicatedの引数xにデータセットを渡し、引数MARGINを2にします。

同じ列のデータがなくなっているのが分かります。

行・列の各要素について重複削除

さらに、次のデータセットesophを例に各行、列について要素単位で重複削除を行う例についても解説します。

これまで、行または列方向についてデータセットをベクトル単位で重複削除してきましたが、次のように関数applyを併用することで行または列の要素単位で重複削除を実施することが可能です。

次を実行すると行の各要素について重複削除を行うことができます。

各行の重複削除後の値を得たいときは、次のようにリストuniqueRowsに各行名を渡します。

列の各要素についての重複削除は以下のように実行します。

同様に、各列の重複削除後の値を取得したいときは、リストuniqueColsに列名を渡します。

まとめ

R言語で重複削除や重複しているかの判定を行う関数とその使い方について見ていきました。

関数uniqueでデータの重複削除、duplicatedでデータが重複しているかどうかの判定を行うことができます。

スポンサーリンク

  • この記事を書いた人
  • 最新記事

usagi-san

統計学とゲームとかをメインに解説していくよ。 数式とかプログラミングコードにミスがあったり質問があったりする場合はコメントで受け付けます。すぐに対応します。

-R言語
-,