R语言中反转数字字符串短横线分隔格式的问题求助
R语言编码调换解决方案
可以用stringr包的str_replace_all配合正则表达式实现,核心是精准捕获短横线前后的数字组,再调换顺序输出:
- 先确保安装并加载
stringr包:
install.packages("stringr") # 首次使用需安装 library(stringr)
- 编写替换逻辑
针对你的编码格式,用正则表达式捕获短横线前后的所有数字,再将两组内容调换位置:
# 测试用编码向量 codes <- c("12-4567", "4567-12", "9-87654321", "123-45") # 执行替换 fixed_codes <- str_replace_all(codes, "^(\\d+)-(\\d+)$", "\\2-\\1") # 查看结果 fixed_codes # 输出:"4567-12" "12-4567" "87654321-9" "45-123"
- 应用到数据集列
如果你的编码是数据框中的一列,比如df$code,直接替换即可:
df$code <- str_replace_all(df$code, "^(\\d+)-(\\d+)$", "\\2-\\1")
正则说明
^和$:确保匹配整个编码字符串,避免部分字符被误替换(\\d+):捕获短横线前后的1到N位数字(\\d匹配数字,+表示至少1个),两个括号对应两个分组\\2-\\1:替换时将第二个捕获组(短横线后内容)放在前面,第一个捕获组(短横线前内容)放在后面,保持数字顺序不变
内容的提问来源于stack exchange,提问作者user13893942
相关产品推荐
相关产品推荐

