我有类似这个问题的类似问题: 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=" "))
答案 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”语句。