LoginSignup
15

More than 5 years have passed since last update.

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

Posted at

何の文化か知りませんが、時々ファイルの先頭に余計な行がついている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は「/」がデフォルトで設定されているので、これだったらオプションは不要。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15