「特定のパターン(文字列)が含まれている場合、そのセル全体を指定した値(NAや別の文字列)に置き換える」 関数です
関数名: replace_cells_containing
# 関数の定義
replace_cells_containing <- function(data, pattern_str, replace_val) {
# データフレームのコピーを作成(元のデータを変更しないため)
df_result <- data
# 全ての列に対して処理を実行
# lapplyを使うことで列ごとにループ処理を行います
df_result[] <- lapply(df_result, function(x) {
# 文字列型の列のみを対象にする
if (is.character(x)) {
# greplで「特定の文字列(pattern_str)」が含まれるか判定
# 該当する箇所のインデックスを取得し、replace_val を代入
x[grepl(pattern_str, x)] <- replace_val
}
return(x)
})
return(df_result)
}使用例
データの準備
# テスト用データフレーム
df <- data.frame(
ID = 1:3,
Name = c("apple", "pineapple", "banana"),
Status = c("ok", "error: 404", "warning: low"),
stringsAsFactors = FALSE
)
cat("--- 元のデータ ---\n")
print(df)--- 元のデータ ---
ID Name Status
1 1 apple ok
2 2 pineapple error: 404
3 3 banana warning: low関数を実行(NAへの置換)
「error」という文字が含まれるセルを NA に置き換えます。
# 引数:データフレーム, 検索する文字, 置換後の値
df_na <- replace_cells_containing(df, "error", NA)
cat("--- 'error' を含むセルを NA に置換 ---\n")
print(df_na)--- 'error' を含むセルを NA に置換 ---
ID Name Status
1 1 apple ok
2 2 pineapple <NA>
3 3 banana warning: low関数を実行(別の文字列への置換)
「apple」という文字が含まれるセルを "FRUIT" という文字列に置き換えます。
df_str <- replace_cells_containing(df, "apple", "FRUIT")
cat("--- 'apple' を含むセルを 'FRUIT' に置換 ---\n")
print(df_str)--- 'apple' を含むセルを 'FRUIT' に置換 ---
ID Name Status
1 1 FRUIT ok
2 2 FRUIT error: 404
3 3 banana warning: low以上です。
