如何在R中移除字符串任意位置的括号及内容以处理网球得分数据?
解决网球得分总局数统计的字符串处理问题
直接用stringr的str_replace_all整合所有替换规则,优先移除括号及内部数字,再清理连字符和空格,具体代码如下:
library(stringr) # 示例得分数据集 score_data <- c("6-4 3-6 6-2", "7-6(6) 6-2") # 批量处理字符串:先移除括号及单数字内容,再清理连字符和空格 cleaned_scores <- str_replace_all(score_data, c("\\(\\d\\)" = "", "-" = "", " " = "")) # 拆分每个字符为数字并求和,得到总局数 total_games <- sapply(cleaned_scores, function(x) sum(as.integer(str_split(x, "")[[1]]))) # 输出结果 total_games
关键细节说明
- 正则
\\(\\d\\):专门匹配(数字)格式的内容,双反斜杠是R中转义特殊字符的要求,\\d代表任意单个数字 - 替换顺序:先处理括号内容再清理其他符号,避免残留无效字符
- 结果验证:
- 第一个示例处理后得到字符串
"643662",求和为6+4+3+6+6+2=27 - 第二个示例处理后得到字符串
"7662",求和为7+6+6+2=21,完全符合预期
- 第一个示例处理后得到字符串
内容的提问来源于stack exchange,提问作者Alex H
相关产品推荐
相关产品推荐

