1

コマンドを使用してCSVファイルをRにインポートしようとしていますread.table。strip.whiteをTRUEに設定したにもかかわらず、「列名よりも列が多い」というエラーメッセージが表示され続けます。csvファイルを作成するプログラムは、各行の終わりに多数のコンマ文字を追加します。これが余分な列のソースであると思います。

read.table("filename.csv", sep=",", fill=T, header=TRUE, strip.white = T, 
           as.is=T,row.names = NULL, quote = "")

RがRコンソールに読み込むときに、ヘッダー行とCSVファイルの残りの部分から余分なコンマの列を削除するにはどうすればよいですか?

また、csvファイル内の多数のセルにはデータが含まれていません。Rにこれらの空のセルを「NA」で埋めさせることは可能ですか?

csvファイルの最初の2行:

Document_Name,Sequence_Name,Track_Name,Type,Name,Sequence,Minimum,Min_(with_gaps‌​),Maximum,Max_(with_gaps),Length,Length_(with_gaps),#_Intervals,Direction,Average‌​_Quality,Coverage,modified_by,Polymorphism_Type,Strand-Bias,Strand-Bias_>50%_P-va‌​lue,Strand-Bias_>65%_P-value,Variant_Frequency,Variant_Nucleotide(s),Variant_P-Va‌​lue_(approximate),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Chr2_FT,Chr2,Chr2.bed,CDS,10000_ARHGAP15,GAAAGAATCATTAACAGTTAGAAGTTGATG-AAGTTTCA‌​ATAACAAGTGGGCACTGAGAGAAAG,55916421,56019336,55916483,56019399,63,64,1,forward,,,U‌​ser,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
4

2 に答える 2

4

colClasses と「NULL」エントリの組み合わせを使用して、コンマを「空白にする」ことができます (まだ必要, fill=TRUEです:

read.table(text="1,2,3,4,5,6,7,8,,,,,,,,,,,,,,,,,,
 9,9,9,9,9,9,9,9,,,,,,,,,,,,,,,,,", sep=",", fill=TRUE, colClasses=c(rep("numeric", 8), rep("NULL", 30)) )
#------------------
  V1 V2 V3 V4 V5 V6 V7 V8
1  1  2  3  4  5  6  7  8
2  9  9  9  9  9  9  9  9
Warning message:
In read.table(text = "1,2,3,4,5,6,7,8,,,,,,,,,,,,,,,,,,\n9,9,9,9,9,9,9,9,,,,,,,,,,,,,,,,,",  :
  cols = 26 != length(data) = 38

最初の行の最後にある改行を追加する必要がありました。(データの例をコメントに入れるのではなく、質問を編集する必要があるもう 1 つの理由です。) ヘッダーには、comment.char"" に設定する必要があるオクトソープがありました。

read.table(text="Document_Name,Sequence_Name,Track_Name,Type,Name,Sequence,Minimum,Min_(with_gaps‌​),Maximum,Max_(with_gaps),Length,Length_(with_gaps),#_Intervals,Direction,Average‌​_Quality,Coverage,modified_by,Polymorphism_Type,Strand-Bias,Strand-Bias_>50%_P-va‌​lue,Strand-Bias_>65%_P-value,Variant_Frequency,Variant_Nucleotide(s),Variant_P-Va‌​lue_(approximate),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\nChr2_FT,Chr2,Chr2.bed,CDS,10000_ARHGAP15,GAAAGAATCATTAACAGTTAGAAGTTGATG-AAGTTTCA‌​ATAACAAGTGGGCACTGAGAGAAAG,55916421,56019336,55916483,56019399,63,64,1,forward,,,U‌​ser,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", header=TRUE, colClasses=c(rep("character", 24), rep("NULL", 41)), comment.char="", sep=",")

  Document_Name Sequence_Name Track_Name Type           Name
1       Chr2_FT          Chr2   Chr2.bed  CDS 10000_ARHGAP15
                                                        Sequence  Minimum Min_.with_gaps...  Maximum
1 GAAAGAATCATTAACAGTTAGAAGTTGATG-AAGTTTCA‌​ATAACAAGTGGGCACTGAGAGAAAG 55916421          56019336 55916483
  Max_.with_gaps. Length Length_.with_gaps. X._Intervals Direction Average.._Quality Coverage modified_by
1        56019399     63                 64            1   forward                                     U‌​ser
  Polymorphism_Type Strand.Bias Strand.Bias_.50._P.va..lue Strand.Bias_.65._P.value Variant_Frequency
1                                                                                                    
  Variant_Nucleotide.s. Variant_P.Va..lue_.approximate.
1                                                      

colClasses がどうなるかわかっている場合は、欠損値を数値列で自動的に NA にすることができます。na.strings設定を使用してこれを実現することもできます。ヘッダーを編集して、列名の不正な文字を削除することもできます。(私はそれをする必要があるとは思いませんでした。)

read.table(text="Document_Name,Sequence_Name,Track_Name,Type,Name,Sequence,Minimum,Min_(with_gaps‌​),Maximum,Max_(with_gaps),Length,Length_(with_gaps),#_Intervals,Direction,Average‌​_Quality,Coverage,modified_by,Polymorphism_Type,Strand-Bias,Strand-Bias_>50%_P-va‌​lue,Strand-Bias_>65%_P-value,Variant_Frequency,Variant_Nucleotide(s),Variant_P-Va‌​lue_(approximate),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 Chr2_FT,Chr2,Chr2.bed,CDS,10000_ARHGAP15,GAAAGAATCATTAACAGTTAGAAGTTGATG-AAGTTTCA‌​ATAACAAGTGGGCACTGAGAGAAAG,55916421,56019336,55916483,56019399,63,64,1,forward,,,U‌​ser,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", header=TRUE, colClasses=c(rep("character", 24), rep("NULL", 41)), comment.char="", sep=",", na.strings="")
#------------------------------------------------------
  Document_Name Sequence_Name Track_Name Type           Name
1       Chr2_FT          Chr2   Chr2.bed  CDS 10000_ARHGAP15
                                                        Sequence  Minimum Min_.with_gaps...  Maximum
1 GAAAGAATCATTAACAGTTAGAAGTTGATG-AAGTTTCA‌​ATAACAAGTGGGCACTGAGAGAAAG 55916421          56019336 55916483
  Max_.with_gaps. Length Length_.with_gaps. X._Intervals Direction Average.._Quality Coverage modified_by
1        56019399     63                 64            1   forward              <NA>     <NA>          U‌​ser
  Polymorphism_Type Strand.Bias Strand.Bias_.50._P.va..lue Strand.Bias_.65._P.value Variant_Frequency
1              <NA>        <NA>                       <NA>                     <NA>              <NA>
  Variant_Nucleotide.s. Variant_P.Va..lue_.approximate.
1                  <NA>                            <NA>
于 2012-12-21T20:32:31.173 に答える
2

ファイルの最初の 2 行をいじっていましたが、問題は#列名の 1 つにあるようです。read.tableデフォルトではコメント文字として扱わ#れるため、ヘッダーを読み取り、それ以降をすべて無視して#13 列を返します。

read.table引数を使用してファイルを読み込むことができますcomment.char=""

ちなみに、これは、質問をする人が作業しているファイル/データセットの例を含める必要があるもう 1 つの理由です。

于 2012-12-22T03:20:23.867 に答える