
データ解析の流れ (4): データのフィルタリング
前回は、データの選択を行いました。これは、データから必要な「列」を選択するものでした。それに対して、データから必要な「行」を取り出すのがフィルタリングの処理です。
filter()によるデータのフィルタリング
tidyverse には、フィルタリングするために filter() 関数があります。使い方は、フィルタリングの条件式を引数に指定します。下記に例を示します。
前回までの結果が、selected_data に格納されているとします。
> selected_data <- select(result, Symbol, Sample1, Sample2)
> selected_data
# A tibble: 3 × 3
Symbol Sample1 Sample2
<chr> <dbl> <dbl>
1 AAA 1 4
2 BBB 2 5
3 CCC 3 6
filter() 関数を使って、Symbol が "AAA" の行だけ取り出す処理です。
> filter(selected_data, Symbol == "AAA")
これで条件式に合う行だけが表示されます。
# A tibble: 1 × 3
Symbol Sample1 Sample2
<chr> <dbl> <dbl>
1 AAA 1 4
>
条件式の組み合わせ
複数の条件式を組み合わせて指定することも可能です。
例えば、「Sample1 の値が 1 以上」かつ「Sample2 の値が5以上」のものを取り出す場合の条件式は、「Sample1 > 1 & Sample2 > 5」です。
> filter(selected_data, Sample1 > 1 & Sample2 > 5)
# A tibble: 1 × 3
Symbol Sample1 Sample2
<chr> <dbl> <dbl>
1 CCC 3 6
>
条件式の「かつ」を意味するのが 「&」です。
一方、「または」を意味するのが「|」です。
> filter(selected_data, Sample1 > 1 | Sample2 > 5)
# A tibble: 2 × 3
Symbol Sample1 Sample2
<chr> <dbl> <dbl>
1 BBB 2 5
2 CCC 3 6
>
他のプログラムでは、「&&」、「||」と書く場合がありますが、 tidyverse では、1つだけ指定します。「&&」や「||」でも実行できてしまいますが、別の処理になってしまうので注意しましょう。