r - 将 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"
解决方案
#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
推荐阅读
- arrays - Powershell:读取主机以选择数组索引
- html - 在 VS Code 中保存时关闭自动关闭的 HTML 标签?
- asynchronous - 如何测量 Julia 中函数的 @async 运行时?
- pact - 使用 SpringRestPactRunner 时出现 NoSuchMethodException
- function - 有人可以帮我把这个函数翻译成 sml 吗?
- javascript - 如何在 appcelerator Titanium 中将 WKWebView 与本地文件一起使用?
- kubernetes - Prometheus 查询获取整个集群的内存限制承诺
- bash - 从数组中挑选数字,看看它们是否是偶数并且小于 380
- linux - 如何使用 x86-64 和 Linux 在 PCIE 总线上生成零长度读取?
- pine-script - 在代码交易视图中隐藏图表、数量和信号标签上的交易