SAS上で走っているRとSASでのデータセットの受け渡し

Share Button

昨日のpostでSAS上でRを走らせたので、Rで作ったデータをそのままSASで分析継続できるようにします。簡単です。
 
とりあえずぼくが使いたいのはRMeCabなので、青空文庫から戸坂潤『イデオロギー概論』を引っ張ってきてローカルにテキストで保存してあります。本当はプログラム書けばこれ自体ウェブから直接落としてこれるんですけどね。
 

PROC IML;
  submit/R;
  library(RMeCab);
   result <- RMeCabFreq("c:/sastemp/ideo.txt") ;
  endsubmit;
  run ImportDataSetFromR("work.result", "result");
quit;
PROC SORT data=result;
  by DESCENDING freq;
  WHERE Info1 ='名詞';
run;
 
submit/R – endsubmit間がRにサブミットされますので、そこにRで走らせる処理を書く。
今回ならまずパッケージをインポートして、単語の頻度表を作成する処理。
 
endsubmitでプログラムを閉じたら、今度はSAS/IML上での処理としてImportDataSetFromR(“ライブラリ名.データセット名”, “Rのオブジェクト名“)を指定することで、SAS上にインポートできます。ImportMatrixFromRで同じようにIML上のマトリクスとしてインポートすることも可能です。
いちからcsv吐いてそれを再びSASでインポートするのは、なんかかっこ悪い感じがします。
 
んでIMLを閉じたら、今指定したデータセット名でプロシージャなり走らせれば、そのまま動いてくれます。今回は名詞に限定して出現頻度の多いものから順に並べ替えています。これぐらいならRで実装できるのでSASに戻す必要もありませんけどね。でもこの感じなら分析フローの中にスムーズにRを組み込むことはできそうな感じがしますね。
 
 

Share Button

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.