【问题标题】:Problems reading in Pipe delimited csv with special characters into R将带有特殊字符的管道分隔 csv 读入 R 时出现问题
【发布时间】:2020-03-26 12:44:16
【问题描述】:

我一直在尝试读取一个以管道分隔的 文件,其中包含有关一些志愿者水质数据的 96 个变量。在文件中随机出现单引号和双引号以及分号、破折号、斜线和可能的其他特殊字符

姓名:乔纳森“乔”史密斯;杰瑞;艾米丽;等等

从几个变量的输出(例如IsNewVolunteer)来看, 似乎在读取数据时出现问题。 IsNewVolunteer 应该始终是 YN,但数字正在出现,当我查询这些行时,数据似乎正在发生变化。显然不是名称的变量位于Firstnamelastname 列中。

原始数据格式使得查看和排除故障有点困难,尤其是由于额外的变量。我会找到删除它们的方法,但与 R 合作的目标是提供能够在经常更新的数据集上运行的代码。

我试过了

read.table("dnrvisualstream.csv",sep="|",stringsAsFactors = FALSE,quote="")

但这会产生以下错误:

扫描错误(文件 = 文件,什么 = 什么,sep = sep,quote = quote,dec = dec,: 第 132 行没有 94 个元素

但是,我注意到第 132 行并没有什么特别之处。我在

上取得了更大的成功
read.csv("dnrvisualstream.csv",sep="|",stringsAsFactors = FALSE,quote="")

但这仍然会产生如上所述的偏移和错误。有什么我做错了吗?任何信息都会有所帮助。

【问题讨论】:

  • 请查看How to make a great R reproducible example,以修改您的问题,并从您的数据中提取更小的样本(查看?dput())。发布您的数据或没有数据的图像会使我们难以为您提供帮助!
  • 您是否尝试过指定编码?类似:read.csv("dnrvisualstream.csv",sep="|",stringsAsFactors = FALSE,quote="", encoding = "UTF-8")。在屏幕截图中可见的第 2、3、4 和 21,22 行中还有多个 |||| 分隔符。您可能需要在 R 中或手动编辑 .csv 以删除其中的一些。

标签: csv r r csv data-import


【解决方案1】:

我认为这是两个问题之一:

编码为 UTF-8 或 UTF-16:

试试这个...

read.csv("dnrvisualstream.csv", sep = "|", stringsAsFactors = FALSE, quote = "", encoding = UTF-8)

或者这个……

read.csv("dnrvisualstream.csv", sep = "|", stringsAsFactors = FALSE, quote = "", encoding = UTF-16)

分隔符过多:

如果这不起作用,请右键单击您的 .csv 文件并在文本编辑器中打开它。您在屏幕截图中可见的第 2、3、4 和 21,22 行中有多个 |||| 分隔符。按CTRL+H查找替换:

Find: ||||
Replace: |

保存新文件并再次尝试在 R 中打开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    相关资源
    最近更新 更多