列を選択する場合は、select() 関数を用いますが、それに対して、「行を選択する」には、 filter() 関数を用います。
filter(対象のデータ, 条件式)
具体的には、下記のようになります。filter(result_data, Symbol == "AAA")
の部分。
> result_data
# A tibble: 3 x 5
Id Symbol Description Sample1 Sample2
<chr> <chr> <chr> <dbl> <dbl>
1 id1 AAA lorem ipsum a 1 4
2 id2 BBB lorem ipsum b 2 5
3 id3 CCC lorem ipsum c 3 6
>
>
> filter(result_data, Symbol == "AAA")
# A tibble: 1 x 5
Id Symbol Description Sample1 Sample2
<chr> <chr> <chr> <dbl> <dbl>
1 id1 AAA lorem ipsum a 1 4
条件式には、かつ (AND)、または (OR) の表現も可能です。AND を意味するの記号が &
、OR を意味する記号が |
です。(&&, || と2つ書くとエラーにはなりませんが、違う動作になるため注意しましょう。)下記は、 Sample1 の値が 1 以上、かつ、 Sample2 の値が 2 以上という条件の例です。
> filter(result_data, Sample1 > 1 & Sample2 > 2)
# A tibble: 2 x 5
Id Symbol Description Sample1 Sample2
<chr> <chr> <chr> <dbl> <dbl>
1 id2 BBB lorem ipsum b 2 5
2 id3 CCC lorem ipsum c 3 6
文字列が対象で、複雑な条件式(正規表現など)が必要な場合は、stringr パッケージを用います。(tidyverse を読み込むと自動で読み込まれます。)
例えば、「特定の文字列を含む」という条件式は、 str_detect() を使います。filter() の条件式の部分に str_detect(対象の文字列, パターン)
を記述します。
> filter(result_data, str_detect(Description, "ipsum a"))
# A tibble: 1 x 5
Id Symbol Description Sample1 Sample2
<chr> <chr> <chr> <dbl> <dbl>
1 id1 AAA lorem ipsum a 1 4
stringr パッケージには、他にも、文字列を置換 (str_replace) したり、連結 (str_c) したりする関数が含まれています。
検出 (str_detect), 置換 (str_replace), 連結 (str_c), 大文字に変換(str_to_upper), 小文字に変換 (str_to_lower), 先頭だけ大文字 (str_to_title)
https://stringr.tidyverse.org