Rでcsvファイルの読み込みや出力をしたい!
列名にしたい行が一行目にないんだけど、どうしたらいいのか分からない!
NAとして読み込みたい文字列が複数あるんだけどどうしたらいいの!?
こんな疑問にお答えします!
関連記事
前準備:パッケージのインストールと読み込み
csvファイルの読み込みと出力をするためにtidyverseパッケージをインストールします。
すでにインストール済みの方は、二行目のコードから実行してください。
install.packages("tidyverse") #パッケージのインストール
library(tidyverse) #パッケージの読み込み
使用するパッケージはreadrパッケージですが、tidyverseパッケージを読み込めばreadrも自動的に読み込まれます。tidyverseはデータ分析にとても便利なパッケージなのでぜひインストールしておきましょう!
read_csv関数でcsvファイルを読み込む
今回は、以下のようなtest_trees.csvというファイルを読み込みます。
一行目が列名で、一部が空欄になっていたり、n.a.といった文字列が入っているデータです。
このファイルをRのワーキングディレクトリに入れ、以下のコードで読み込みます。
本記事では、黒字が入力コード、青字がRからの出力として記載しています。
# ワーキングディレクトリ内のtest_tree.csvファイルを読み込む
csvdata <- read_csv("test_trees2.csv")
head(csvdata) #読み込んだデータの上から6行を確認
> head(csvdata)
# A tibble: 6 × 3
Girth Height Volume
<dbl> <dbl> <chr>
1 8.3 70 10.3
2 8.6 NA 10.3
3 8.8 63 10.2
4 10.5 72 n.a.
5 10.7 81 18.8
6 10.8 83 19.7
無事読み込めました!(エラーがでた場合はこちらをご覧ください)
一行目は列名、二行目の空白はNA、4行目のn.a.はそのまま文字列で入っています。
ポイント
読み込む際に特に何も指定しなかった場合、
・一行目は列名として自動的に読み込まれる
・空白はNAとして読み込まれる
二行目から読み込みたい場合
一行目が列名になっておらず、二行目が列名になっている場合は以下のコードで処理します。
skip = 1の場合、一行目がスキップされて二行目から読み込まれます。
csvdata <- read_csv("Desktop/test_trees.csv", skip = 1)
head(csvdata)
> head(csvdata)
# A tibble: 6 × 3
`8.3` `70` `10.3`
<dbl> <dbl> <chr>
1 8.6 NA 10.3
2 8.8 63 10.2
3 10.5 72 n.a.
4 10.7 81 18.8
5 10.8 83 19.7
6 11 66 15.6
一行目がskipされ、二行目が列名になりました。
skip = 数字で指定した行数分がスキップされます。
任意の文字列をNAとして読み込みたい場合
先ほどのtest_tree.csvは、n.a.という文字列が入ってしまっていました。
データに文字列が入っていると後の処理がしにくいため、あらかじめNAにしておきたい場合があります。
その場合は、na = で、NAとして読み込んでほしい内容を記述します。
csvdata <- read_csv("Desktop/test_trees.csv", na = "n.a.")
head(csvdata)
> head(csvdata)
# A tibble: 6 × 3
Girth Height Volume
<dbl> <dbl> <dbl>
1 8.3 70 10.3
2 8.6 NA 10.3
3 8.8 63 10.2
4 10.5 72 NA
5 10.7 81 18.8
6 10.8 83 19.7
4行目のn.a.がNAに置き換わりました!便利ですね!
NAとして読み込みたい文字列が複数ある場合
以下のようなデータの場合についてです。
-だったり、naだったり、n.a.だったりが入り混じっているようなファイルです。
こういうこと、ありませんか…?
先ほどと同じく、na = の部分にNAと置き換えたい文字列を入れるだけでOKです。
csvdata <- read_csv("Desktop/test_trees2.csv", na = c("-", "na", "n.a."))
head(csvdata)
> head(csvdata)
Girth Height Volume
<dbl> <dbl> <dbl>
1 8.3 70 10.3
2 8.6 NA NA
3 8.8 63 10.2
4 10.5 72 NA
5 10.7 81 18.8
6 10.8 83 19.7
すべてNAに置き換えられました!
だいたいのcsvファイルの読み込みはこれでばっちりいけそうです。
Rstudioを使っている場合、Import Datasetからも読み込める
Rstudioを使っている場合、画面右上のEnvironmentペインにあるImport Datasetからも読み込むことができます。
1. Import Datasetをクリック
2. From Text(readr)をクリック
3. Browseで読み込みたいcsvファイルを選択
4. Import Optionsのところで各種設定をします。
Name: 読み込むデータの名前を決める(Data, Dt, Datasetなど)
Skip: 何行スキップして読み込むか指定
NA: NAとして読み込みたい文字列を指定
5. 最後にImportをクリック
簡単に読み込むことができるので、ぜひ試してみてください!
csvファイルを出力する方法
Rでcsvファイルの出力をする方法はとっても簡単です。
今回は例として、Rに元々入っているデータセット"trees"をcsvファイルとして出力してみます。
以下のコードでcsvファイルへの出力が可能です。
# treesというデータセットをcsvファイルに出力
write_csv(trees, "test_trees.csv")
# デスクトップに出力する場合
write_csv(trees, "Desktop/test_trees2.csv")
とっても簡単に出力できます。
出力したファイルは、特に指定しなければワーキングディレクトリに入ります。
まとめ:csvファイルの読み込みや出力はreadrパッケージで!
csvファイルを読み込みや出力は、tidyverseのreadrパッケージを使用すると簡単にできます。
また、readrにはread_csv2関数も存在することに気づいた方もおられるかもしれません。read_csv2は一部のヨーロッパ諸国で一般的に使われているファイル形式を読み込むのに使う関数のようです。よって、read_csv関数さえ覚えておけばOKです。
read_csv関数のヘルプより引用
read_csv2()
uses;
for the field separator and,
for the decimal point. This format is common in some European countries.
今回紹介した方法で、だいたいのcsvファイルは読み込むことができると思います。
R言語の勉強におすすめの本
今後Rの勉強をしていきたい!という方に、こちらの参考書がおすすめです。
特に、RユーザのためのRStudio実践入門は、tidyverseパッケージに特化して書かれていてとても実用的でしたのでオススメです。私自身、この本を読んでRで出来ることが一気に増えた実感のある本です。kindleで試し読みもできるのでぜひ参考にしてください。
この記事がRを学ぶ皆様のお役に立ちますように。