【问题标题】:How to read a .csv file containing apostrophes into R?如何将包含撇号的 .csv 文件读入 R?
【发布时间】:2012-03-26 01:59:58
【问题描述】:

我很难让 R 读取包含撇号的 .txt 或 .csv 文件。

我的一些专栏包含描述性文字,例如“关注客户需求”或“警长的副手”。我的文件在 Excel 中正确打开(即所有数据出现在正确的单元格中;有 3 列和大约 8000 行,并且没有丢失数据)。但是当我让 R 读取文件时,会发生这种情况:

data <-read.table("datafile.csv", sep=",", header=TRUE)
  Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 520 did not have 3 elements

(第 520 行是包含撇号的第一行。)

如果我进入 .txt 或 .csv 文件并手动删除所有撇号,则 R 会正确读取文件。但是,如果可以的话,我宁愿保留撇号。

我是 R 新手,如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 我赞成,因为尽管我基本上知道这一点,但在读取数据采集机器中生成的 csv 文件时,我曾经得到“gotcha'd”。问题是,在一个相当大的标题块内,该文件有一些带有撇号的字段(意外发生)。有时您必须仔细查看源文件中的 crapola。

标签: r csv punctuation


【解决方案1】:

默认情况下,read.table 将单引号和双引号视为引号字符。您需要将quote="\"" 添加到您的read.table 通话中。或者,您可以只使用read.csv,默认情况下它只将双引号视为引号字符。

【讨论】:

  • 感谢您的帮助。有趣的是,我无法获得您或 DWin 建议的使 read.table 工作的任何选项……但 read.csv 可以解决问题!
  • read.csv的另一个区别是它的默认设置是fill = TRUE
【解决方案2】:

从长远来看,彻底研究 ?read.table 中的选项会有所收获。引用字符的默认值是 quote = "\"'",在 R 解析该表达式后实际上只有两个字符,单引号和双引号。您可以使用 quotes=NA 将它们从考虑中删除。有时这是必要的还删除默认为“#”的“comment.char”,将“as.is”更改为 TRUE 以防止字符串转换为因子可能会有所帮助。

【讨论】:

  • 我认为现在应该是 quote=NULL 而不是 quotes=NA 最新版本。
  • 我遇到了同样的问题,但我试图导入一个包含引号的列表,该引号必须保留在导入的列表中。使用quotes=NULL 对我有用(就像下面的答案,quotes="\\"。我很欣赏实际的答案,而不是“阅读帮助手册,希望你能找到它,”所以谢谢。在我的情况下,我使用> 变量
【解决方案3】:

在 read.table 中设置参数 quote="\\" 应该可以解决问题。

【讨论】:

  • 嗯,它可能,但你知道你会做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
  • 2017-11-11
  • 1970-01-01
  • 2023-03-27
  • 2011-02-07
相关资源
最近更新 更多