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.csv
和fileEncoding="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在第一列名称前加上垃圾文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章