2013年9月3日火曜日

SASデータセットを高速でRに取り込むときの流れ

前回sas7bdatをRに入れるという記事を作ったのですが、
こんなのがありました。

■Macros communicate SQLite and SAS without ODBC
http://www.sasanalysis.com/2011/05/macros-communicate-sqlite-and-sas.html

SASから、直接SQLiteを吐き出してくれるマクロです。
その逆も出来るみたいですよ。
こんな便利ものを無料で提供してくださるのは本当にありがたいですね。
ということで、SAS(SQLite)→Rと1回で取り込みができちゃいます。

手順は下記の通りです。
※いつもなら、Macなのですが
 SASということでWindows環境下での作業手順です。

0.sqlite3.exeのあるファイルへパスを通す。
 #環境変数でググるとパスの通し方が書いてあります。

1.上記リンク先のマクロを読み込む。
 #sqlite3へのパスが通ってないとちゃんと動作してくれないので注意。

2.データセットを作ってマクロを実行。
 #SASでのマクロの呼び出し方は、こんなかんじかと。
 
 %sas2sqlite(sastable = 【吐き出すデータセット名】, path = 【吐き出す先のパス】, database = 【sqliteデータの名前】)

あとはR側で、RSQLiteパッケージを使って取り出すだけです。

念のため,R側での操作方法を記載しておくと、

 
library(RSQLite)
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname="【吐き出す先のパス】/【sqliteデータの名前】")
x <- dbGetQuery(con, "select * from 【吐き出すデータセット名】;")
head(x)  #表示して確認