【问题标题】:Importing .csv files with "special" characters导入带有“特殊”字符的 .csv 文件
【发布时间】:2015-10-21 16:34:07
【问题描述】:

我正在尝试将 .csv 文件读入 R。该 .csv 文件是在 Excel 中创建的,它包含“长”破折号,这是 Excel“自动更正”序列空格破折号的结果-空间。包含这些“长”破折号的示例条目:

美国 - 加利福尼亚 - 洛杉矶
美国 - 华盛顿 - 西雅图

我尝试了不同的编码,包括以下三个选项:

x <- read.csv(filename, encoding="windows-1252") # Motivated by http://www.perlmonks.org/?node_id=551123
x <- read.csv(filename, encoding="latin1")
x <- read.csv(filename, encoding="UFT-8")

但是,长破折号要么显示为 �(第一个和第二个选项),要么显示为 &lt;U+0096&gt;(第三个选项)。

我意识到我可以以不同的格式存储文件或使用不同的软件 (Excel to CSV with UTF8 encoding),但这不是重点。

有没有人弄清楚 R 中的哪种编码选项在这种情况下有效?

【问题讨论】:

  • 对于第三个选项,您还可以在之后清理数据,例如 gsub("&lt;U+0096&gt;", "", x, fixed=TRUE)

标签: r excel encoding


【解决方案1】:

如果您使用的是 RStudio,请使用导入数据集。

  • 使用标题:否
  • 分隔符空格
  • 十进制句点
  • 双引号
  • 取消选中字符串作为因素

加载文档后,您只需删除现在显示为“?”的列您可以看到这是第 2 列和第 4 列。如果您有一个数据框 mydf,那么您将像这样删除第二列。

mydf_new&lt;-mydf[-2]

您可以对另一列执行相同的操作,现在是第 3 列。

【讨论】:

  • 这个解决方法还不错,除了一件事:在我提供的示例中,有固定数量的带有破折号的列。实际上,这个数字不是固定的……而且它并没有真正解决是否存在可以避免这种变通办法的编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2012-05-02
  • 1970-01-01
  • 2021-05-26
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多