1

この質問のような同様の問題があります: SQLDFまたはread.csv.sqlを使用してN番目の列ごとに選択する

大きなファイルのいくつかの列を読みたい (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=" "))
4

1 に答える 1

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

その他の例については、このブログ投稿を参照してください。paste「select」ステートメントは、列の開始位置と幅に関する詳細を知っていれば、簡単に作成できます。

于 2013-10-31T13:09:23.267 に答える