【问题标题】:Removing all characters after Special Character in Column Name删除列名中特殊字符后的所有字符
【发布时间】:2019-09-21 08:07:58
【问题描述】:

我有一个已导入 R 的数据集,但需要删除“(”之后的列名中的所有内容。我尝试了 string.split(), sub(), and grepl() 函数,但没有成功。任何和所有的帮助都是感激不尽!

我希望以下变成这样:

水果 => 水果

蔬菜(少量)=> 蔬菜

面包屑 => 面包屑

奶酪(切达干酪)=> 奶酪

酸奶(原味%)=>酸奶

【问题讨论】:

  • 试试sub("\\s*\\(.*$", "", v1)
  • 要演示@akrun 的答案,请尝试:v1 <- colnames(your_df); colnames(your_df) <- sub("\\s*\\(.*$", "", v1) 这是一个正则表达式,用于删除空格\\s 后跟左括号\\( 之后出现的任何内容。

标签: r special-characters multiple-columns rename columnname


【解决方案1】:

使用基础 R:

items <- c('Fruit', 'Vegetables (Few)', 'Bread Crumbs', 'Cheese (Cheddar)', 'Yogurt (Plain%)')
items_simplified <- trimws(gsub('\\(.*', '', items))

> items_simplified
[1] "Fruit"        "Vegetables"   "Bread Crumbs" "Cheese"       "Yogurt"   

您也可以使用 tidyverse 包中的 stringr

library(stringr)
items_stringr <- str_trim(str_extract(items, '[^(]*'))

> items_stringr
[1] "Fruit"        "Vegetables"   "Bread Crumbs" "Cheese"       "Yogurt"      

trimwsstr_trim 修剪项目的尾随和前导空格。

【讨论】:

    【解决方案2】:

    使用正则表达式或正则表达式

    点赞:/(.+)/g

    并删除找到的所有内容

    【讨论】:

    • .+ 只会选择所有字符,并且您没有任何与正则表达式关联的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2012-05-04
    相关资源
    最近更新 更多