You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言求助:如何彻底移除DataFrame列中的括号与句号?

解决DataFrame列内容清理的问题

我来帮你搞定这个字符串清理的小麻烦!你现在得到London()这类结果,核心原因是正则表达式的特殊字符没处理到位,咱们一步步来修正:

问题出在哪?

你原来的代码里:

mutate_all(~gsub("(Sessions)", "", .))

这里的(Sessions)里的括号是正则表达式的分组标记,不是普通字符,所以它实际匹配的是Sessions这串文字,而不是带括号的(Sessions)。替换后,原来的London.(Sessions)就变成了London.(),接着第二个str_replace_all只去掉了.,括号不在[\\.,]的字符集里,所以就留下了London()。

两种靠谱的解决方案

方案1:精准匹配要删除的后缀

直接匹配.(Sessions)这个完整后缀,注意要转义正则特殊字符(.和()都是特殊字符,需要加\\转义):

library(dplyr)
library(stringr)

stacked_sessions <- stacked_sessions %>%
  mutate(Column1 = gsub("\\.(Sessions)", "", Column1))

这样就能一次性把.(Sessions)替换成空,直接得到干净的城市名。

方案2:通用匹配点后的所有内容

如果你的列里所有字符串都是「城市名+.+其他内容」的格式,用这个更通用的写法,直接删掉.及后面的所有字符:

stacked_sessions <- stacked_sessions %>%
  mutate(Column1 = sub("\\..*", "", Column1))

这里\\..*的意思是:匹配一个.,然后匹配任意数量的后续字符,替换成空,不管后面跟着什么都能去掉。

验证效果

假设你的原始数据是:

stacked_sessions <- tibble(Column1 = c("London.(Sessions)", "Birmingham.(Sessions)", "Leeds.(Sessions)"))

用上面任意一种方案处理后,Column1的内容就会变成:London、Birmingham、Leeds,完全符合你的需求~

内容的提问来源于stack exchange,提问作者333

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:27:46