R logo

文字列に特定の文字が含まれている行を抽出したい場合、grepl()を使うと便利。

grepl()の特徴
  • grepl()は、文字列に特定のパターンが含まれるかどうかをTRUE/FALSEで返す。
  • データフレームの行抽出の際に便利。

特定の文字を含む行を抽出:grepl()

データフレームの作成

以下のようなデータフレームを作ってみる。

# サンプルデータフレーム
df <- data.frame(
  Date = c("2025-06-01", "2025-06-02", "2025-06-03"),
  Sample = c("Human brain", "Mouse Brain", "Mouse kidney")
)
output
         Date       Sample
1 2025-06-01 Human Brain
2 2025-06-02 Mouse Brain
3 2025-06-03 Mouse Kidney

特定の文字を含む行を抽出

上のデータフレームの中から、”Mouse”という名前のある行を抽出したい場合。

# "Mouse" を含む行を抽出
df_Mouse <- df[grepl("Mouse", df$Sample), ]
print(df_Sample)
output
         Date       Sample
2 2025-06-02 Mouse Brain
3 2025-06-03 Mouse Kidney
ポイント
  • grepl("Mouse", df$Sample) は、各行に「Mouse」が含まれるかどうかをTRUE/FALSEで返す。
  • それを使って、df[ , ] の形式でTRUEの行だけを抽出できる。

完全一致をしたい場合

上のデータフレームの中から、”Mouse”という文字に完全一致した行のみを抽出したい場合。

# 完全一致(==)を使った例
df[df$Sample == "Mouse Brain", ]
output
         Date       Sample
2 2025-06-02 Mouse Brain

この方法では、「Mouse Kidney」などの部分一致ではヒットしない。

複数キーワードでの抽出

上のデータフレームの中から、”Human”と"Kidney"のどちらかの文字に一致した行を抽出したい場合。

# 「Human」または「Kedney」を含む行を抽出
df[grepl("Human|Kidney", df$Sample), ]
output
         Date       Sample
1 2025-06-01 Human Brain
3 2025-06-03 Mouse Kidney

正規表現 "Mouse|Kidney" によって、どちらかを含む行を抽出できる。

 

注意点
  • grepl() は大文字小文字を区別する(ignore.case = TRUE で無視可能)。
  • NAが含まれるときは、na.rm = TRUE のような工夫が必要な場合あり。