我正在使用R进行一些数据预处理,下面是我面临的问题:我使用read.csv(filename,header=TRUE)输入数据,然后变量名中的空格变成".",例如,一个名为Full Code的变量在生成的数据中变成了Full.Code。在处理之后,我使用write.xlsx(filename)导出结果,而变量名被更改。如何解决这个问题?
此外,在输出.xlsx文件中,第一列变成索引(即1到N),这不是我所期望的。
发布于 2013-06-18 15:45:42
如果在读取数据时将check.names=FALSE设置为read.csv,则不会更改名称,在将数据写回之前不需要对其进行编辑。当然,这意味着您在编辑时需要引用列名(在某些情况下为后引号)或按位置引用列,而不是按名称引用。
发布于 2013-06-17 16:39:13
要获得名称中的空格,请执行以下操作(在导出之前-R确实允许在变量名称中使用空格,但这很痛苦):
# 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()也有)。
发布于 2014-08-23 16:08:13
这里有一个函数(对不起,我知道它可以重构),即使有多个连续点和尾随点,也可以生成很好的列名:
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
}示例用法:
ds <- makeColNamesUserFriendly(ds)https://stackoverflow.com/questions/17152483
复制相似问题