导入字符串中包含分隔符的 CSV
Importing CSV where separator is contained in string
我有一个包含 3 列的 CSV,以逗号 (",") 分隔
不幸的是,有几行是这样的:
6, 2015-04-14, "\"this is, a test\""
其中 read.table
解释为 4 列而不是 3 列,因为引号中有额外的“,”。
我该如何解决这个问题?
您可能希望将 csv 文件中的分隔符更改为不会与字符串中的“\w,\w”内容冲突的内容。我在预处理步骤中需要这样做,以便为导入准备好数据。例如,您可以使用制表符分隔符轻松地从获得数据文件的位置重新导出数据文件。然后,在 R 中,您将使用
读入它
read.csv2("data/myfile.tsv", header=TRUE, sep = "\t")
这可能就足够了:
test <- read.table("test.csv",sep = ",",quote = '\')
test
V1 V2 V3
1 6 2015-04-14 ""this is, a test""
双引号内 read.csv
将两个连续的双引号视为一个双引号的内容(不是定界符)所以逐字阅读使用 readLines
的行,使用 chartr
替换每个反斜杠加双引号,然后使用 read.csv
读取结果行:
read.csv(text = chartr('\', '"', readLines("myfile.csv")))
或者我们根本不需要内部双引号,在这种情况下只需将 \"
替换为空字符串即可:
read.csv(text = gsub('\"', '', readLines("myfile.csv"), fixed = TRUE))
我有一个包含 3 列的 CSV,以逗号 (",") 分隔
不幸的是,有几行是这样的:
6, 2015-04-14, "\"this is, a test\""
其中 read.table
解释为 4 列而不是 3 列,因为引号中有额外的“,”。
我该如何解决这个问题?
您可能希望将 csv 文件中的分隔符更改为不会与字符串中的“\w,\w”内容冲突的内容。我在预处理步骤中需要这样做,以便为导入准备好数据。例如,您可以使用制表符分隔符轻松地从获得数据文件的位置重新导出数据文件。然后,在 R 中,您将使用
读入它read.csv2("data/myfile.tsv", header=TRUE, sep = "\t")
这可能就足够了:
test <- read.table("test.csv",sep = ",",quote = '\')
test
V1 V2 V3
1 6 2015-04-14 ""this is, a test""
双引号内 read.csv
将两个连续的双引号视为一个双引号的内容(不是定界符)所以逐字阅读使用 readLines
的行,使用 chartr
替换每个反斜杠加双引号,然后使用 read.csv
读取结果行:
read.csv(text = chartr('\', '"', readLines("myfile.csv")))
或者我们根本不需要内部双引号,在这种情况下只需将 \"
替换为空字符串即可:
read.csv(text = gsub('\"', '', readLines("myfile.csv"), fixed = TRUE))