R言語

【R言語】csvファイルの読み込み・書き込み

  1. HOME >
  2. R言語 >

【R言語】csvファイルの読み込み・書き込み

スポンサーリンク

R言語でcsvファイルを操作する方法を解説します。

csvファイルの読み込みや書き込みに用いる関数とその実行例について見ていきます。

単純な読み込みと書き込みだけでなく、csvファイルに追記する例も紹介します。

今回紹介するプログラミングコードは以下からダウンロードすることができます。

エクセルファイルの操作については次の記事を参照してください。

R言語 エクセルに色を塗る【自作関数】

こんにちは、usagi-sanです。今回は、R言語でエクセルファイルに色を塗る方法を紹介します。 統計解析を行う中で、解析結果の表などをエクセルに保存することがあると思います。解析結果を見やすくするた ...

続きを見る

Rでデータ解析を始めるならコレ
¥3,300 (2022/06/01 17:20時点 | Amazon調べ)

csvファイルの操作

csvファイルの操作に関する関数を以下にまとめました。

csvファイルの読み込みと書き込みに用いる関数は以下の通りです。

read.csv

関数read.csvはcsvファイル中のデータをデータフレームとして読み込む関数です。

以下、関数read.csvとその引数の説明です。

read.table(file, header = FALSE, sep = "", quote = "\"'",
                 dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
                 row.names, col.names, as.is = !stringsAsFactors,
                 na.strings = "NA", colClasses = NA, nrows = -1,
                 skip = 0, check.names = TRUE, fill = !blank.lines.skip,
                 strip.white = FALSE, blank.lines.skip = TRUE,
                 comment.char = "#",
                 allowEscapes = FALSE, flush = FALSE,
                 stringsAsFactors = default.stringsAsFactors(),
                 fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

read.csv(file, header = TRUE, sep = ",", quote = "\"",
              dec = ".", fill = TRUE, comment.char = "", …)

read.csv2(file, header = TRUE, sep = ";", quote = "\"",
              dec = ",", fill = TRUE, comment.char = "", …)

read.delim(file, header = TRUE, sep = "\t", quote = "\"",
              dec = ".", fill = TRUE, comment.char = "", …)

read.delim2(file, header = TRUE, sep = "\t", quote = "\"",
              dec = ",", fill = TRUE, comment.char = "", …)

関数read.csvの引数
filecharacter型。読む込むファイル名。
headerlogical型。ファイルの一行目を列名として読み込むかどうか。
sep区切り文字。
quote引用符に用いる文字列。
dec小数の桁数。
numeralsどのように数値を変換するかどうか。
row.namesデータの行名。
col.namesデータの列名。
as.ischaracter型の変数をどのよう変換するかどうか。
na.strings欠測値を表す文字列。NA、"NULL"、"factor"、"Date"、"POSIXct"が指定できる。
colClassescharacter型。列の型を指定する。
nrows整数。この行までのデータが読み込まれる。
skip整数。スキップするデータの行。
check.nameslogical型。TRUEのとき、データフレームの名前が構文的に正しいかどうかチェックする。
filllogical型。TRUEのとき、違う長さの行があるとき、空白が加えられる。
strip.whitelogical型。sepが指定されているときに用いる。引用符が使われていないcharacter型のフィールドから空白文字の前後を削除する。
blank.lines.skiplogical型。TRUEのとき空白行が無視される。
comment.charcharacter型。1文字からなるベクトル。コメント行であるか判断する際に用いる。
allowEscapeslogical型。Cスタイルのエスケープ文字、例えば\nを適用するかどうか。
flushlogical型。TRUEのとき、最終行の余分なフィールドがコメントとして扱われる。
stringsAsFactorslogical型。character型のベクトルをfactor型に変換するかどうか。
fileEncodingcharacter型。ファイル中の文字列のエンコーディング方法。指定した方法で再びエンコーディングされる。
encoding入力された文字列のエンコーディング。Latin-1またはUTF-8であるか指定するのに用いる。
text数fileが指定されていない状態でtextにデータを記述すると、そのデータが読み込まれる。
skipNullogical型。NULLをスキップするかどうか。
...read.tableに渡す他の引数。

write.csv

関数write.csvはcsvファイルに出力する関数です。

以下、関数write.csvとその引数の説明です。

write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
                 eol = "\n", na = "NA", dec = ".", row.names = TRUE,
                 col.names = TRUE, qmethod = c("escape", "double"),
                 fileEncoding = "")

write.csv(…)

write.csv2(…)

関数write.csvの引数
xファイルに書き出すオブジェクト。行列またはデータフレームが望ましい、そうでない場合データフレームに変換できるようなオブジェクト。
filecharacter型。出力するファイル名。
appendlogical型。TRUEの場合、追記を行う。
quotelogical型またはnumeric型のベクトル。TRUEの場合、characterまたはfactor型の列が全てダブルクオーテーション“”で囲まれる。numeric型の場合、そのインデックスの要素がダブルクオーテーションで囲まれる。
sepcharacter型。区切り文字。xの各要素がこの文字で区切られる。
eol最終行にプリントする文字。
na欠測値に用いる文字列。
decnumericまたはcomplex型の小数点を表す文字。
row.nameslogical型またはcharacter型のベクトル。TRUEの場合、行名を出力する。character型のベクトルの場合、そのベクトルが行名として出力される。
col.nameslogical型またはcharacter型のベクトル。TRUEの場合、列名を出力する。character型のベクトルの場合、そのベクトルが行名として出力される。
qmethodcharacter型。引用符を用いる際の「"」の処理を指定する文字列。"escape"で引用符はバックススラッシュを使う方法で回避される。"double"の場合、引用符二重となる。
fileEncodingcharacter型。ファイルエンコーディング。
...write.tableに渡す引数。append、col.names、sep、dec、qmethodは変更できない。

実行例

csvファイルの読み込みと書き込み方法をそれぞれ解説していきます。

csvファイルの読み込み

まず、csvファイルの読み込みについて見ていきます。

次のデータセットirisが保存されたcsvファイルを読み込む方法について紹介します。

iris.csv

csvファイルを読み込むには、次のようにread.csvを用います。

引数にcsvファイルの名前を渡すことでファイルを読み込むことができます。

関数read.csv以外にもread.csv2read.tableでcsvファイルを読み込むことができます。

read.tableで読み込む場合は区切り文字などの引数を設定する必要があります。

datasetを参照するとcsvファイル中のirisのデータがデータフレームとなっているのが確認できます。

また、次のような空白行があるデータや長さの異なる行が存在するファイルを読み込むときは、少し工夫が要ります。

iris_summary_and_data

このようなデータを読み込む場合、read.csvではなくread.tableを用います。

次のように引数col.namesを最大の列数に合わせて、blank.lines.skipをFALSEにすることで、ファイル中の形を保った状態で読み込むことができます。

summary_and_dataを参照すると次のように形を保ったままデータフレームとして読み込んでいるのが分かります。

csvファイルの書き込み

次にcsvファイルの書き込みについて見ていきます。

次のirisのsummaryをcsvファイルに保存する例について紹介します。

csvファイルに保存するには次のように関数write.csvを実行します。

第一引数に保存したいデータフレーム、第二引数にファイル名を渡すだけです。

write.csv2でも同様に実行することでcsvファイルの保存ができます。

read.tableで保存する場合は、引数sepdecqmethodを以下のように設定する必要があります。

実行すると下の画像のsummary_iris.csvが作業ディレクトリに保存されます。

summary_iris.csv

既存のcsvファイルに追記したい場合は、次のように引数appendをTRUEにします。

注意として、write.csvではappendの変更ができないため、csvファイルの追記を行うときはwrite.tableで行う必要があります。

次のfor文を実行すると、各irisの変数ごとの平均と分散がcsvファイルに出力されます。

stats_iris.csv

まとめ

R言語でのcsvファイルの操作方法を紹介しました。

read.csvでcsvファイルの読み込み、write.csvでcsvファイルの書き込みを行うことができます。

スポンサーリンク

  • この記事を書いた人
  • 最新記事

usagi-san

統計学とゲームとかをメインに解説していくよ。 数式とかプログラミングコードにミスがあったり質問があったりする場合はコメントで受け付けます。すぐに対応します。

-R言語
-,