R语言根据另一列关键词匹配替换对应行指定列的字符
需求说明
- 目标数据集
Date_Received列中,部分行包含关键词Abandonment - 需要定位所有符合上述特征的行,将对应行
AP列中的字符串AP替换为AB - 原有待优化代码存在两个问题:一是管道传参逻辑错误,二是关键词拼写错误(将
Abandonment错写为Abandonement),会导致匹配失败
实现方案
方案1:dplyr 管道写法(匹配你现有代码的包加载习惯)
library(tidyverse) df <- df %>% mutate(AP = if_else( grepl("Abandonment", Date_Received), str_replace(AP, "^AP", "AB"), AP ))
- 逻辑说明:用
mutate()修改AP列,通过if_else()做分支判断:匹配到关键词的行,将AP列开头的AP替换为AB;未匹配到的行保留原值 - 正则
^AP表示仅替换字符串开头的AP,避免误替换字符串中间位置出现的AP字符,如果需要替换所有位置的AP,将正则改为"AP"即可
方案2:base R 原生写法(无需加载第三方包)
# 定位符合条件的行 match_index <- grepl("Abandonment", df$Date_Received) # 替换对应行的AP值 df$AP[match_index] <- gsub("^AP", "AB", df$AP[match_index])
结果验证
处理后示例数据中第4、6行(Date_Received含Abandonment的行)的AP值会从原有的AP-18-004、AP-18-006更新为AB-18-004、AB-18-006,其余行AP值保持不变。
内容的提问来源于stack exchange,提问作者Ed_Gravy
相关产品推荐
相关产品推荐

