只读文本文件的第n列,该文件没有带R和sqldf的标题

时间:2013-10-31 12:46:27

标签: sql r bigdata read.table sqldf

我有类似这个问题的类似问题: selecting every Nth column in using SQLDF or read.csv.sql

我想阅读一些大型文件列(150个表,> 500,000列,空格分隔,填充数字数据,只有32位系统可用)。这个文件没有标题,因此上面线程中的代码不起作用,我决定写一篇新文章。

你有想法解决这个问题吗?

我想过类似的东西,但任何带有fread或read.table的结果都可以:

MyConnection <- file("path/file.txt")
df<-sqldf("select column 1 100 1000 235612 from MyConnection",file.format = list(header=F,sep=" "))

1 个答案:

答案 0 :(得分:1)

如果它们是固定宽度,您可以使用substr指定要读取的列的开始和结束位置:

x <- tempfile()
cat("12345", "67890", "09876", "54321", sep = "\n", file = x)

myfile <- file(x)

sqldf("select substr(V1, 1, 1) var1, substr(V1, 3, 5) var2 from myfile")
#   var1 var2
# 1    1  345
# 2    6  890
# 3    9   76
# 4    5  321

有关更多示例,请参阅this blog post。如果您知道有关列起始位置和宽度的详细信息,则可以使用paste轻松构建“select”语句。