
文字列に特定の文字が含まれている行を抽出したい場合、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
のような工夫が必要な場合あり。
リンク
リンク
リンク
リンク