首页 > 解决方案 > 将 csv 导入 R 时拆分行

问题描述

我有一个大的 csv 文件,其中随机行以以下字符串结尾:/\r/. 此后的下一行应该是前一行的延续,但它被视为新行。应该应用什么功能来解决这个问题?到目前为止,我已经设法通过将 csv 作为字符串向量导入到 R 来定位损坏的行,即我使用了文件中没有出现的分隔符,因此 R 将整行读取为一列。现在我想将以上述字符串结尾的行和出现在它之后的行粘贴在一起。

这里的例子:

"CLSL;2017-01-09;PA930082402;23;10986450"
"CLNA;2016-09-05 /\r/"
";650963783;1;60010670"

我希望它看起来像这样:

"CLSL;2017-01-09;PA930082402;23;10986450"
"CLNA;2016-09-05;650963783;1;60010670"

标签: rcsvimport

解决方案


#read file
txt <- readLines("test.csv")

#find row index of junk value
idx <- which(grepl(" /\\\\r/", txt))
#append next immediate row with the row having junk value
txt[idx] <- paste0(txt[idx], txt[idx+1])
txt <- txt[-(idx+1)]

#remove junk value
txt <- gsub(" /\\\\r/", "", txt)

输出是:

> txt
[1] "CLSL;2017-01-09;PA930082402;23;10986450" "CLNA;2016-09-05;650963783;1;60010670"  

样本数据: test.csv包含

CLSL;2017-01-09;PA930082402;23;10986450
CLNA;2016-09-05 /\r/
;650963783;1;60010670

推荐阅读