R的read.csv在第一列名称前加上垃圾文本[重复]

Posted

技术标签:

【中文标题】R的read.csv在第一列名称前加上垃圾文本[重复]【英文标题】:R's read.csv prepending 1st column name with junk text [duplicate] 【发布时间】:2014-08-25 10:11:33 【问题描述】:

我已将数据从 SQL Server Management Studio 中的结果网格导出到 csv 文件。 csv 文件看起来正确。

但是,当我使用 read.csv 将数据读入 R 数据帧时,第一列名称前面带有“ï..”。如何摆脱这种垃圾短信?

例子:

str(trainData)

'data.frame':   64169 obs. of  20 variables:    
 $ ï..Column1             : int  3232...   
 $ Column2                : int  4242...

数据看起来像这样(没什么特别的):

第 1 列,第 2 列 100116577,100116577 100116698,100116702

【问题讨论】:

.. 通常来自被. 替换的空格。 i 是 csv 的一部分吗?我只见过X 以数字开头时被添加到colnames 中。 你能展示一个输入数据的样本和你用来读取它的 read.table 命令吗? 您也可以使用正则表达式替换它。 names(trainData)[1] <- gsub("[^A-Za-z0-9]", "", names(trainData)[1]) 我刚刚遇到了这个错误,并通过将数据集复制到一个新的 .csv 文件中解决了它 - 列名之前没有空格,我找不到其他方法来摆脱这个符号跨度> 【参考方案1】:

文件开头有一个 Unicode UTF-8 BOM:

http://en.wikipedia.org/wiki/Byte_order_mark

文本编辑器或网络浏览器将文本解释为 ISO-8859-1 或 CP1252 将为此显示字符

R 为您提供 ï,然后将其他两个转换为点,因为它们是非字母数字字符。

这里:

http://r.789695.n4.nabble.com/Writing-Unicode-Text-into-Text-File-from-R-in-Windows-td4684693.html

邓肯·默多克建议:

如果您愿意,可以将文件声明为“UTF-8-BOM”编码 忽略输入的 BOM

所以试试你的read.csvfileEncoding="UTF-8-BOM" 或者说服你的SQL wotsit 不要输出BOM。

否则,您不妨测试一下名字是否以ï.. 开头并以substr 剥离(只要您知道您永远不会有一个真正以这样开头的列......)

【讨论】:

试过 read.csv("data.csv",encoding="UTF-8-BOM") 但仍然得到 BOM。从 sql server man studio 将结果保存到文件时,默认编码为 UTF-8。将编码更改为 ANSII 并删除了 BOM。 如果我创建一个带有 BOM 的文件,我无法复制您的行为,所以它可能是操作系统或 Windows 版本的东西。如果您的输出中有任何非纯英文字符,使用 ANSI(或 ASCII?)编码只会产生问题...您可以发布示例文件吗? 重要编辑:正确的 arg 是 fileEncoding= 而不是 encoding=read.csv 会默默地忽略它。

以上是关于R的read.csv在第一列名称前加上垃圾文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

读取缺少逗号的 .csv 文件。碱基R

避免仅在 R 数据表的第一列中换行

R:在第一列中按重复项合并行

如何删除JTable的选定行(在第一列中有复选框)的文本?

R语言read csv导入后,数据变了

在第一列的 R 中查询内存不足 60gb tsv,哪个数据库/方法?