【问题标题】:Using gsub I want to remove white spaces使用 gsub 我想删除空格
【发布时间】:2018-07-31 16:37:07
【问题描述】:
names(chocolateData) <- gsub("[[:space:]+]", "_", names(chocolateData))

我已使用此代码省略了带有下划线的空格,但它不起作用。我已经查看了时间并想要reviewed_time,但我却得到了reviewed.time

【问题讨论】:

  • 试试gsub("[[:space:]]+", "_", names(chocolateData)) 没有使用dput的小可复现例子,不好推荐\

标签: r data-cleaning


【解决方案1】:

这不使用gsub,而是清理变量名的好工具

chocolateData <- data.frame("dark chocolate" = "yum", "white chocolate" = "yuck", check.names = FALSE)
chocolateData
#    dark chocolate white chocolate
# 1            yum            yuck

library(janitor)
chocolateData <- clean_names(chocolateData, case = "snake")
chocolateData
#    dark_chocolate white_chocolate
# 1            yum            yuck

我强烈建议检查janitor out:https://cran.r-project.org/web/packages/janitor/janitor.pdf

【讨论】:

    【解决方案2】:

    R 不喜欢包含空格的变量名。你可以拥有它们,但它们会让事情变得很奇怪,需要使用`s。因此,当某些函数创建数据框时,它们会自动将变量名中的空格转换为句点。

    我认为这里发生的情况是,当创建 chocolateData 时,变量 `reviewed time` 被转换为 reviewed.time。由于您的 gsub 表达式仅替换空格,因此句点不会更改。

    如果这是问题所在,最简单的解决方案就是更改表达式以替换句点:

    gsub("[[:space:].]+", "_", 'reviewed.time')
    [1] "reviewed_time"
    

    另一种选择是跟踪更改变量名称的函数。最有可能的罪魁祸首是read.table(或者是孩子read.csvread.delim)。尝试传递参数:

    check.names = FALSE
    

    这将防止它在加载数据时更改变量名(但如果您有不需要的变量名,可能会导致下游问题)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-17
      • 2011-05-30
      • 1970-01-01
      • 2023-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多