R:read.csvなどでの行スキップ、コメント行スキップ

  • 8
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

何の文化か知りませんが、時々ファイルの先頭に余計な行がついているCSVファイルをもらうことがあります。
同種のファイルなのにものによってコメント行数が違うようなものも。。。
使いにくいんでやめて欲しいんですけど…。

とまあ、そんな余計なものが含まれている場合の回避方法として、read.table系の関数には行スキップとコメント行と見なす先頭文字を指定するオプションがあります。

こんなCSVファイルがあったとします。

#コメントだよ。
#コメント2行目だよ。
"c1","c2","c3","c4","c5","c6"
"文字1-1", "001",1,2,3,"文字1-2"
"文字2-1", "101",3,2,1,"文字2-2"

単純に読み込もうとした場合。

data <- read.csv('test.csv',encoding="UTF-8")
> data
[1] X.コメントだよ...コメント2行目だよ..c1 c2                                     c3                                    
[4] c4                                     c5                                     c6                                    
 <0 行> (または長さ 0 の row.names) 

おかしな結果に。

余計な先頭2行をスキップしましょう。

> data <- read.csv('test.csv', skip=2, encoding="UTF-8")
> data
       c1  c2 c3 c4 c5      c6
1 文字1-1   1  1  2  3 文字1-2
2 文字2-1 101  3  2  1 文字2-2

まともに読めました。

「#」で始まる行をコメントとして扱って同様の結果を得ることもできます。

> data <- read.csv('test.csv', comment.char="#", encoding="UTF-8")
> data
       c1  c2 c3 c4 c5      c6
1 文字1-1   1  1  2  3 文字1-2
2 文字2-1 101  3  2  1 文字2-2

まともに読めました。
comment.charは「/」がデフォルトで設定されているので、これだったらオプションは不要。