R语言无硬编码借助正则移除单元格GxR标识并补全对应行空值的方法
R语言通用正则数据清洗需求与运行异常
开发硬性约束
编写清洗逻辑时绝对不能硬编码任何列名、行名、具体单元格取值,所有规则需要通用可复用;测试环境已提前加载dplyr、stringr、tidyverse依赖包。
核心实现目标
- 自动识别单元格内符合
G+数字+R格式的标识(典型形式如G1R、G2R、G3R),将该类标识与其前缀N拼接形成的整段片段(典型形式如NG1R)从原单元格值中剔除。 - 对完成上述片段剔除操作的行,若对应目标单元格为空值,则将空值替换为从被剔除片段中提取到的
N值。
测试场景说明
测试数据集结构
构建测试数据框emp.data,各字段构成:
emp_id:1到5的连续整数序列emp_name列逐行取值依次为:"M3737"、"M3738"、"M3739"、"NG1R M3740"、"M3741"realvalues列逐行取值依次为:"N"、"N"、"N"、""、"N"salary列:存储对应岗位的薪资数值
当前运行异常
现有代码实际输出不符合预期:第4行的emp_name字段仍保留完整值"NG1R M3740",对应行的realvalues字段保持空白未做处理。
预期输出标准
- 第4行
emp_name字段值更新为移除目标片段后的"M3740" - 第4行原本为空的
realvalues单元格填充为"N" - 其余所有行的字段值完全保留原始状态,不做任何修改
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

