RでSASやエクセル、CSV、クリップボードからデータを読み込み、目的のファイルフォーマットでデータを書き出すには、フォーマットに合わせてコマンドやパッケージを使い分ける必要があり少々面倒です。
そんな問題を解決してくれる「rioパッケージ」を紹介します。
多くのファイルフォーマットの読み込み、書き出しに対応しかつ複雑な設定がいらない初心者にやさしい設計だと思います。書き出しは目的とするファイルの拡張子を設定するだけです。
ほとんどの場合はimport, exportの利用で済むと思います。
パッケージのバージョンは0.5.29。実行コマンドはwindows 11のR version 4.1.2で確認しています。
対応ファイルフォーマット
代表的な読み込み、書き出しを紹介します。
ファイル拡張子 | 読み込み | 書き出し |
---|---|---|
tsv | ◯ | ◯ |
csv | ◯ | ◯ |
psv | ◯ | ◯ |
fwf | ◯ | ◯ |
rds (Rオブジェクト) | ◯ | ◯ |
Rdata (Rオブジェクト) | ◯ | ◯ |
json | ◯ | ◯ |
dta (Stataファイル) | ◯ | ◯ |
sav (SPSSファイル) | ◯ | ◯ |
dbd (XBASEファイル) | ◯ | ◯ |
xls, xlsx (エクセルファイル) | ◯ | xlsxのみ |
arft | ◯ | ◯ |
R (Rシンタックス) | ◯ | ◯ |
xml | ◯ | ◯ |
sas7bdat, xpt (SASファイル) | ◯ | × |
mtp | ◯ | × |
rec | ◯ | × |
syd (Systatファイル) | ◯ | × |
dif | ◯ | × |
ods | ◯ | × |
Fortranファイル | ◯ | × |
クリップボード | ◯ | × |
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("rio")
実行コマンドの紹介
コマンドだけでは初心者に優しくないので、ダイアログからデータの読み込み、書き出しが指定できるようにtcltkパッケージを使用しています。importコマンドとexportコマンドを利用します。exportコマンド対応のファイル形式はパッケージの記事内の「対応ファイルフォーマット」を確認してください。
注意:日本語を含むcsvの書き出しは文字化けします。オプションにfileEncoding=”CP932″, eol=”\r\n”を追記すると解決します。eol=”\r\n”はエクセルとファイルの関連を指定していするオプションです。詳細はコマンド内を確認してください。
#GUIを利用して読み込むファイルを指定するコマンド library("tcltk") library("rio") SelectData <- paste(as.character(tkgetOpenFile(title = "読み込むファイルを指定", filetypes = '{"ファイルを指定" {"*.*"}}',initialfile = "*.*")), sep = "", collapse =" ") AnaData <- import(SelectData) #例:データをSPSSファイルで出力 #目的のファイル拡張子にすることでファイルフォーマットを指定できます #注意:csvの場合、日本語を含むと文字化けします。 #オプションにfileEncoding="CP932", eol="\r\n"を追記すると解決します ###データ例の作成##### #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 300 TestData <- tibble(Group = sample(paste0("Group", 1:4), n, replace = TRUE), X_num_Data = sample(c(c(1:30), c(100:175)), n, replace = TRUE), Y_num_Data = sample(c(51:100), n, replace = TRUE)) setwd(paste(as.character(tkchooseDirectory(title = "保存場所を選択"), sep = "", collapse =""))) #ファイルを保存:exportコマンド export(TestData, "TestData.sav")
少しでも、あなたの解析が楽になりますように!!