我在数据帧中有一列字符串,我想替换这些值,只包括前" ("个之前的子字符串,即第一个空格/开括号对之前的子字符串.并不是所有的字符串都包含括号,我希望它们保持原样.

示例数据:

col1 <- c(1, 2, 3, 4)
col2 <- c("a b (ABC DE)", "bcd", "cd ef (CE)", "bcd")
df <- data.frame(col1, col2)
df

输出:

  col1       col2
1    1 a b (ABC DE)
2    2        bcd
3    3  cd ef (CE)
4    4        bcd

我想要的输出是这样的:

col1 <- c(1, 2, 3, 4)
col2 <- c("a b", "bcd", "cd ef", "bcd")
df <- data.frame(col1, col2)
df

输出:

  col1 col2
1    1  a b
2    2  bcd
3    3 cd ef
4    4  bcd

实际的数据帧是40000多行,字符串包含许多可能的值,因此不能像示例中那样手动完成.我对使用regex/patterns一点也不自信,但我承认这可能是最简单的方法.

推荐答案

一个可能的解决方案,基于stringr:

library(tidyverse)

df %>% 
  mutate(col2 = str_remove_all(col2, "\\s*\\(.*\\)\\s*"))

#>   col1  col2
#> 1    1   a b
#> 2    2   bcd
#> 3    3 cd ef
#> 4    4   bcd

R相关问答推荐

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

使用spatVector裁剪网格数据时出现的问题

如何使用rmarkdown和kableExtra删除包含折叠行的表的第一列的名称

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

在R中创建一个包含转换和转换之间的时间的列

过滤器数据.基于两列的帧行和R中的外部向量

在使用ggroove后,将图例合并在gplot中

如何在R中添加截止点到ROC曲线图?

为什么当用osmdata映射R时会得到相邻状态?

展开对数比例绘图的轴(添加填充)

查找所有站点的最小值

如何在R中使用hmm TMB提前一步预测观察到的状态?

如何对r中包含特定(未知)文本的行求和?

优化从每个面的栅格中提取值

如何使用FormC使简单算术运算得到的数字是正确的?

如何在内联代码中添加额外的空格(R Markdown)

将边列表转换为路径长度列表

将R中对象的CSV数组转换为JSON数组

将y轴格式更改为R中的百分比

如何使用ggsurvfit包更改风险表中的标签名称?