dplyrのfilterでいずれかの値に当てはまる行を抽出したい
前田先生によるデータハンドリング入門←を見ればOKですが,メモ代わりにまとめておきます。 dplyrのfilterを使うことである列で特定の条件に合致するものが含まれる「行」を抜き出すことができます。 dplyrを使う中で以下の事態を考えます。
「特定の値(具体的にはID)が複数あり,その値たちが含まれる行(いずれかの値に当てはまる行)を抽出したい」
より具体的には,実験データのうち,除外事項に当てはまる参加者のIDを特定しており,そのデータを取り除きたいという場合です。 例えば,N=10のデータで参加者番号が1〜10で割り当てられている中で,1, 2, 4, 6, 5, 10の参加者のデータを抽出したいという場合です。参照元を見ればわかりますが,文字列でも可能です。
データセットはsleepを使います。睡眠時間のデータでIDが個人番号として当てられています。
#sleepのデータセットを利用 dat <- sleep #IDがいずれかの値に一致する行を抽出 dat <- dat %>% dplyr::filter((ID %in% c(1, 2, 4, 6, 5, 10)))
逆に,いずれかの値に一致する行を除外したい場合は以下です。
#sleepのデータセットを利用 dat <- sleep #IDがいずれかの値に一致する行を抽出 dat <- dat %>% dplyr::filter((!ID %in% c(1, 2, 4, 6, 5, 10)))
なお,ここまで書いておいてなんですが,データ分析を行う場合には,当該IDを除外するかどうかの識別する列を作成し,そこに除外するかどうか(0 or 1)を指定しておく方が無難かもしれません。