R:读入双引号分隔的CSV,使用额外的双引号而不是英寸

时间:2015-02-26 16:23:27

标签: r csv

我有一个双引号分隔的CSV文件,其中包含额外的双引号,quotes.csv

ID,Page,Category,Comments1
"6203168",26,"A","test, line 1"
"6205809",26,"B","test, line 2"
"6205410",16,"C","test, 3" line 3"
"6205410",16,"D","test, line 4"

我阅读了很多SO和谷歌链接,但仍然无法正确读取文件。 基本代码:

DataFrame = read.csv("quotes.csv",colClasses=c("character","integer","character","character"),header=TRUE,sep=",")
View(DataFrame)

我尝试了quote="\"",尝试了read.table quote的变体 - 没有任何帮助。注意:无法手动编辑CSV文件以更正该双引号。寻找这样的输出:

    ID  Page    Category    Comments1
1   6203168 26  A   test, line 1
2   6205809 26  B   test, line 2
3   6205410 16  C   test, 3" line 3
4   6205410 16  D   test, line 4

谢谢!

1 个答案:

答案 0 :(得分:0)

根据this Stack Overflow帖子,read.csv似乎无法处理转义双引号。但该链接提供了一种可能的解决方法。我发现的大多数解决方案都涉及在调用read.csv之前删除双引号。

在Linux中,要从名为input.csv的文件中删除所有双引号,请使用sed命令:

sed 's/\"//g' input.csv output.csv

output.csv是您的csv文件,其中所有引号都已被删除。

在Windows中,从文件中删除引号有点毛茸茸,您必须编写批处理文件。但是,还有另一种选择。当我使用大型csv文件进行数据建模时,我只需在TextpadNotepad++等程序中打开文件,然后对所有引号进行全局替换。如果您经常处理csv,则可能不希望使用此选项,但这种替代方案适用于偶尔使用。另请注意,当您在编辑器中打开csv文件时,您将面临编辑器将保存和/或删除特殊字符的风险。