导入CSV,其中分隔符包含在字符串中

时间:2015-08-10 16:16:46

标签: r csv import read.table

我有一个包含3列的CSV,以逗号分隔(",")

不幸的是,有这样几行:

6, 2015-04-14, "\"this is, a test\""

其中read.table解释为4列而不是3列,因为附加的","在引号内。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

这可能就足够了:

test  <- read.table("test.csv",sep = ",",quote = '\\')
test
V1          V2                   V3
1  6  2015-04-14  ""this is, a test""

答案 1 :(得分:2)

在双引号内read.csv将两个连续的双引号视为内容的双引号(不是分隔符),因此请使用readLines逐字读取行,使用chartr替换每个反斜杠使用双引号,然后使用read.csv读取结果行:

read.csv(text = chartr('\\', '"', readLines("myfile.csv")))

或者可能是我们根本不想要内部双引号,在这种情况下只需用空字符串替换\"

read.csv(text = gsub('\\"', '', readLines("myfile.csv"), fixed = TRUE))

答案 2 :(得分:1)

您可能希望将csv文件中的分隔符更改为不会与您的&#34; \ w,\ w&#34;你的字符串中的东西。我这样做,我需要在预处理步骤中准备导入数据。例如,您可以使用制表符分隔符轻松地从您获取数据文件的位置重新导出数据文件。然后,在R中,您将使用

读取它
read.csv2("data/myfile.tsv", header=TRUE, sep = "\t")