制表符分隔的文件,具有不同的列数-R

时间:2019-03-08 10:53:24

标签: r readr tab-delimited

我有一个很大的,用制表符分隔的csv文件(10,000,000行)。应当包含11个不同的列,其中包含实验室值(测试编号,测试日期,测试类型,测试单位,值,其他文字等)

使用readr::read_tsv会引发错误:

read_tsv("file_name.csv")

错误:

Warning: 90486 parsing failures.
row col   expected    actual    file
9213391  -- 11 columns 8 columns 'file_name.csv'
9213392  -- 11 columns 4 columns 'file_name.csv'
9217859  -- 11 columns 1 columns 'file_name.csv'
9217860  -- 11 columns 4 columns 'file_name.csv'

找到了一些解决方案,以解决超出预期的更多列的问题,但并非针对此问题。

有什么主意吗?

2 个答案:

答案 0 :(得分:0)

这些是警告,而不是错误。 read_tsv仍然给出结果,如果结果为DF,则attr(DF, "problems")描述问题行。

例如,要删除问题行:

DF <- read_tsv("file_name.tsv")
problems <- attr(DF, "problems")
if (!is.null(problems)) DF <- DF[-problems$row, ]

答案 1 :(得分:0)

我有类似的问题。我认为我们有这个问题的原因是,由于某种原因,某些观测结果被分为两行。

删除这些观察结果可能是一种解决方案。但是我认为,如果警告是由上述原因引起的,将它们合并为一行进行更正可能是更好的解决方案,因为如您所见,您有90486条警告。