如何在没有换行符的字符中使用R中的fread或read_delim

问题描述 投票:0回答:1

我有几个.txt文件需要导入到R作为数据帧进行一些数据分析。其中一个文件没有任何形式的EOL,所以我想知道我将如何导入它。

\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\"\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

这是.txt文件的前500个字符的样子。 EOL需要像这样放置:

\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\"

\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

通常情况下,我只需要在需要的地方添加一个“\ n”,但是在我放置\ n的地方没有重复发生的字符串,所以我不认为gsub会在这个实例中起作用。

看看缺失值是如何用NA清楚地表示的,是否有类似于read_delim的函数有一个“col_number = x”参数?就像前面的x值是标题一样,接下来的x值是第一行的值,依此类推?

如果它改变了什么,这些.txt文件相当大(> 300mb)。

非常感谢Julian_Hn。奇迹般有效。

r fread readr
1个回答
1
投票

我可能只是将其作为向量读取,然后重新格式化为矩阵,其中包含您知道的数据集中的列数。这基本上做你想要的

str <- "\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\";\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA"

vec <- strsplit(str,";")[[1]]
//EDIT: add byrow = T To stay in the right format. Thanks Yuriy
table <- matrix(vec,ncol=23,nrow=3, byrow = T)
df <- as.data.frame(table)
© www.soinside.com 2019 - 2024. All rights reserved.