Rで解析:いろいろなファイルを読み込み、書き出しができます。「rio」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

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 = "&#35501;&#12415;&#36796;&#12416;&#12501;&#12449;&#12452;&#12523;&#12434;&#25351;&#23450;",
                                                  filetypes = '{"&#12501;&#12449;&#12452;&#12523;&#12434;&#25351;&#23450;" {"*.*"}}',initialfile = "*.*")),
                       sep = "", collapse =" ")
AnaData <- import(SelectData)

#&#20363;:&#12487;&#12540;&#12479;&#12434;SPSS&#12501;&#12449;&#12452;&#12523;&#12391;&#20986;&#21147;
#&#30446;&#30340;&#12398;&#12501;&#12449;&#12452;&#12523;&#25313;&#24373;&#23376;&#12395;&#12377;&#12427;&#12371;&#12392;&#12391;&#12501;&#12449;&#12452;&#12523;&#12501;&#12457;&#12540;&#12510;&#12483;&#12488;&#12434;&#25351;&#23450;&#12391;&#12365;&#12414;&#12377;
#&#27880;&#24847;:csv&#12398;&#22580;&#21512;&#12289;&#26085;&#26412;&#35486;&#12434;&#21547;&#12416;&#12392;&#25991;&#23383;&#21270;&#12369;&#12375;&#12414;&#12377;&#12290;
#&#12458;&#12503;&#12471;&#12519;&#12531;&#12395;fileEncoding="CP932", eol="\r\n"&#12434;&#36861;&#35352;&#12377;&#12427;&#12392;&#35299;&#27770;&#12375;&#12414;&#12377;
###&#12487;&#12540;&#12479;&#20363;&#12398;&#20316;&#25104;#####
#tidyverse&#12497;&#12483;&#12465;&#12540;&#12472;&#12364;&#12394;&#12369;&#12428;&#12400;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
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 = "&#20445;&#23384;&#22580;&#25152;&#12434;&#36984;&#25246;"), sep = "", collapse ="")))

#&#12501;&#12449;&#12452;&#12523;&#12434;&#20445;&#23384;:export&#12467;&#12510;&#12531;&#12489;
export(TestData, "TestData.sav")

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました