首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免将列名中的空格替换为句点(".")使用read.csv()

避免将列名中的空格替换为句点(".")使用read.csv()
EN

Stack Overflow用户
提问于 2013-06-17 16:34:28
回答 4查看 38.6K关注 0票数 23

我正在使用R进行一些数据预处理,下面是我面临的问题:我使用read.csv(filename,header=TRUE)输入数据,然后变量名中的空格变成".",例如,一个名为Full Code的变量在生成的数据中变成了Full.Code。在处理之后,我使用write.xlsx(filename)导出结果,而变量名被更改。如何解决这个问题?

此外,在输出.xlsx文件中,第一列变成索引(即1到N),这不是我所期望的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-18 15:45:42

如果在读取数据时将check.names=FALSE设置为read.csv,则不会更改名称,在将数据写回之前不需要对其进行编辑。当然,这意味着您在编辑时需要引用列名(在某些情况下为后引号)或按位置引用列,而不是按名称引用。

票数 43
EN

Stack Overflow用户

发布于 2013-06-17 16:39:13

要获得名称中的空格,请执行以下操作(在导出之前-R确实允许在变量名称中使用空格,但这很痛苦):

代码语言:javascript
复制
# A simple regular expression to replace dots with spaces
# This might have unintended consequences, so be sure to check the results
names(yourdata) <- gsub(x = names(yourdata),
                        pattern = "\\.",
                        replacement = " ")

若要删除第一列索引,只需将row.names = FALSE添加到write.xlsx()中即可。对于以表格格式写出数据的函数,这是一个常见的参数(write.csv()也有)。

票数 10
EN

Stack Overflow用户

发布于 2014-08-23 16:08:13

这里有一个函数(对不起,我知道它可以重构),即使有多个连续点和尾随点,也可以生成很好的列名:

代码语言:javascript
复制
makeColNamesUserFriendly <- function(ds) {
  # FIXME: Repetitive.

  # Convert any number of consecutive dots to a single space.
  names(ds) <- gsub(x = names(ds),
                    pattern = "(\\.)+",
                    replacement = " ")

  # Drop the trailing spaces.
  names(ds) <- gsub(x = names(ds),
                    pattern = "( )+$",
                    replacement = "")
  ds
}

示例用法:

代码语言:javascript
复制
ds <- makeColNamesUserFriendly(ds)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17152483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档