この他の投稿で述べられているように、私は同様の問題に取り組んでおり、コードを調整して、興味のある列を選択し、データファイルに適合させようとしました。
ただし、私の問題は、結果のファイルが元のファイルよりも大きくなっていることです。コードが意図したとおりに機能しているかどうかはわかりません。
SPSS で開くと、データセットはヘッダー行を取り込んだようで、2 行目の終わりなしで何百万ものコピーを作成しました (プロセスを強制的に停止する必要がありました)。
行を指定する while ループにカウンターがないことに気付きました。これは事実でしょうか? R を使ったプログラミングの経験は非常に限られています。ファイルは .csv で、329 の変数と数百万行を含む 4.8 GB です。約 30 個の変数を保持するだけで済みます。
これは私が使用したコードです:
##Open separate connections to hold cursor position
file.in <- file('npidata_20050523-20130707.csv', 'rt')
file.out<- file('Mainoutnpidata.txt', 'wt')
line<-readLines(file.in,n=1)
line.split <-strsplit(line, ',')
##Column picking, only column 1
cat(line.split[[1]][1:11],line.split[[1]][23:25], line.split[[1]][31:33], line.split[[1]][308:311], sep = ",", file = file.out, fill= TRUE)
##Use a loop to read in the rest of the lines
line <-readLines(file.in, n=1)
while (length(line)){
line.split <-strsplit(line, ',')
if (length(line.split[[1]])>1) {
cat(line.split[[1]][1:11],line.split[[1]][23:25], line.split[[1]][31:33], line.split[[1]][308:311],sep = ",", file = file.out, fill= TRUE)
}
}
close(file.in)
close(file.out)