2016-11-08 22 views
0

約10,000個のカラムを持つcsvファイルをインポートしたいと考えています。私はfreadと同様にread.csvを試しましたが、どちらの機能も機能していないようです。大きなテーブルで非ナル・カラム数が少ないファイルのインポート

問題は、左上(ファイル番号)の乱数を除いて、最初の列が完全に空であることです。ファイル名の後の最初の行には、右端に続く列名があります。ここでは、3つのカラムにNAsと整数の両方が含まれているとします。残りの9,997の列はすべて空です(つまり、列名は存在しますが、下位の値は含まれません)。

私はこれらのカラムにNAsを記入したいと思いますが、同時にこれら3つの完全に満たされたカラムをそのままにしておきます。これは可能ではないようですか?データの読み込みは、最後の行まで続く3列の列があっても、最初の行の後のすべての行を強制終了します(行100としましょう)。したがって、ファイル全体が行100までインポートされることを期待します。

私は間違っていますか?

残念ながら私はこの問題のサンプルファイルがありませんが、できるだけ明確に記述しようとしました。

編集:CSVによる輸入のためのコード:

read.csv(csvfile, sep = ";", na.strings=c("NA","..",""," "), stringsAsFactors = F, 
       header = T, as.is = T, dec = ".",fill = TRUE,quote="") 

のfreadのためのコード:

fread(csvfile, sep = ";", na.strings=c("NA","..",""," "), stringsAsFactors = F, 
      header = T) 

私は問題も等しくない列の長さとして記述することができると信じています。

+0

他のツールを使用してこのファイルを最初にスクラブすることをおすすめします。メモ帳++を開くことができれば、それはJavaのようなものです。 'read.csv'が処理できる形式にします。 –

+0

@TimBiegeleisen okしかし実際の問題は何ですか?不足している行の名前ですか?私は、最大の行の長さが最長の列の最大サイズを計算し、残りの部分をNAsでいっぱいにするのは簡単でしょうか? 編集:また、私はその形式でさらにいくつかのファイルを持っていて、私は可能な限り自動化された解決策を探しています。 – user3032689

+0

最初の行はヘッダーを持つことも、最初の行をデータにすることもできます。これは 'read.csv'があなたを連れて行く限りです。 –

答えて

1

明らかに、最初の行には1つのエントリを持つデータファイルがあります。これは

read.table(text=example, sep=";", header=TRUE) 

を動作しません

example <- "filename;col_one;col_two;col_three 
1;2;3 
4;5;6 
7;8;9 
5;; 
" 

が、これは、ヘッダー

scan(text=example, what="character", nlines=1, sep=";") 

を読みますと、これはデータに

read.table(text=example, sep=";", header=FALSE, skip=1) 
を読み込みます:さんは、一例として、次の文字列を使用してみましょう

あなたはhav eを使用してヘッダーからファイル名を削除し、ヘッダーとデータを再度結合します。私が見る限り、最後の行はfreadに簡単には変換されないことは非常に残念です。

+0

実際に再テストされ、動作します。ありがとう! – user3032689

関連する問題