R プロシジャのユーザーガイドとリファレンス バージョン 3.2 WPS R プロシジャ ユーザーガイドとリファレンス “SAS 言語と R 言語でのプログラミング” バージョン: 3.2.3 Copyright © 2002-2016 World Programming Limited www.worldprogramming.com R プロシジャのユーザーガイドとリファレンス バージョン 3.2 目次 はじめに...................................................................................................... 3 クイックスタート..........................................................................................5 構成と設定.................................................................................................. 9 R_HOME 環境変数を設定する........................................................................................................9 options グローバルステートメントを通して R_HOME を設定.......................................... 10 WPS サーバー起動環境変数を通して R_HOME を設定..................................................... 11 UNIX シェルのプロファイルスクリプトを R_HOME に設定する............................................ 11 各プラットフォームについての注意.................................................................................................. 12 Windows.............................................................................................................................12 UNIX - ソースをダウンロードして R をビルドする................................................................. 12 Mac OS X..........................................................................................................................13 基本的な操作............................................................................................ 14 WPS と R のインストールと設定を確認する................................................................................... 14 WPS と R 間のデータの受け渡し...................................................................................................14 EXPORT ステートメントの使用........................................................................................... 15 IMPORT ステートメントの使用............................................................................................ 15 R の画像の使用.............................................................................................................................16 R の追加パッケージの使用............................................................................................................ 18 リファレンス............................................................................................... 19 EBNF と構文図の読み方............................................................................................................... 19 R プロシジャ..................................................................................................................................22 PROC R.............................................................................................................................22 ASSIGN..............................................................................................................................23 EXECUTE.......................................................................................................................... 25 EXPORT............................................................................................................................ 25 IMPORT............................................................................................................................. 27 LOAD................................................................................................................................. 29 SAVE..................................................................................................................................30 SUBMIT..............................................................................................................................31 さらに詳細な情報...................................................................................... 34 法律上の通知............................................................................................ 35 2 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 はじめに R プロシジャを使用して SAS 言語で書かれたプログラムに R 言語を含むことができます。 WPS から R プロシジャ(PROC R)を設定し使用する際に必要な情報がこのドキュメントに記されています。 なぜ R 言語なのか R 言語は下記の理由でデータ分析界の主要な階層に人気があります。 • オープンソースのエコシステムで強力な地位を築いている。 • 多数の統計機能が使用できる。 • WPS で使用できない統計機能もいくつか使用できる。 • R に秀でたプログラマーが既に多数存在し、彼らはそのスキルを生かしたいと考えている。 R と SAS 言語を共に使用するということで、個々を部分的に足すよりも全体で優れた解を得ることができます。 業務用で高いパフォーマンスを持つ SAS 言語で大量のデータ処理と分析を記述し、同時に R の新奇で専門 的な統計機能を有効利用することが、この相互運用性によって可能になります。 大まかな概要 プログラムの大部分を SAS 言語で記述し、専門的な統計部分を R で記述することを推奨します。 PROC R シンタックスを使用することによって、WPS と R 環境の間でデータを簡単に素早く効率的に転送す ることができます。データが転送されると、 WPS 環境以外で書かれた R プログラムと全く同じ方法で、通常の R シンタックスをプログラム記述のために使用できます。 R プログラムが完了すると処理を続けるためにデータが WPS 環境へ直ちに転送されます。 3 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 このガイドとリファレンスについて まず使ってみるにはクイックスタートを参照してください。さらに背景や詳細な設定の情報を得るには構成と設 定をご確認ください。標準的な処理方法を理解するには基本的な操作を参照してください。WPS と R の統合に おけるシンタックスとセマンティクスについての詳細な情報はリファレンスセクションを一からご確認ください。 4 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 クイックスタート 使用を開始するには SAS 言語と R 言語両方を使用した経験が必要になります。 使い始める前に下記をご確認ください。 • WPS 3.1以降と R(バージョン2.15か3.x どちらか)がインストールされているか。このチュートリアルは Windows にインストールした WPS を仮定していますが、他のオペレーティングシステムでの実行もこれに 似ています。 • R には共有ライブラリの API が含まれいています。これは Windows と Mac では規定でインストールに含ま れていますが Linux のような他のプラットフォームでは規定では含まれていません。詳細な情報は構成と設 定でご確認ください。 警告 : R のインストールに共有ライブラリの API が含まれていないと R プロシジャが正確に処理されま せん。 • WPS ワークベンチで ODS HTML の自動生成と管理が有効になっているか。この設定はウィンドウ ➤ 設 定 ➤ WPS ➤ リザルトのオプションで行ってください。 下にあるプログラム例は下記のような内容です。 • R のインストール場所の特定。 • source という WPS データセットを作成する。 • データセットのソースを R 環境へ転送する。 ‣ R 言語からデータセットをプリントする。 ‣ R 言語でソースデータの簡単な処理と作図を実行する。 ‣ R 言語で x という簡単なデータセットを作成する。 • WPS 環境で R 環境からのデータセット x を回収する。 • SAS 言語を使用してデータセット x を出力する。 1. WPS を起動して新しいプログラム(スクリプトとも呼ばれる)を作成します。 2. 下記のコードをファイルにコピーして、一番初めの行がローカルにインストールした R を指し示すように修正 してください。例えば下記のようになります。 options SET=R_HOME "C:\Program Files\R\R-2.15.3"; data source; do x=1 to 10; y=ranuni(-1); output; end; PROC R; export data=source; submit; str(source) print(source) model <- lm(source$y ~ source$x) print(model) 5 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 par(mfrow=c(2, 2)) plot(model) x <- (1:10) endsubmit; import R=x; run; proc print data=x; run; 3. プログラムを保存してツールバーの実行アイコン をクリックして実行してください。 4. 生成されたログと ODS アウトプットを確認してください。 標準の R のソースが WPS のログファイルに下図のように送られています。 print と plot ステートメントからのアウトプットを含んだローカルサーバーの HTML アウトプット。 6 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 7 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 これでお使いの WPS と R の環境が一体化し、双方の言語へ同時にアクセスすることで幅広い可能性をお試 しいただけます。R コードは submit と endsubmit ステートメントの間に記述して、残りの PROC R ス テートメントを使用して双方の環境でデータの転送を処理するというのが主要な概念です。 8 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 構成と設定 このセクションでは WPS と R 環境の構成と設定について説明しています。 必要なソフトウェア R プロシジャは WPS のバージョン3.1以降で実行でき、32ビットと64ビットどちらのバージョンの WPS でも使 用できます。追加でモジュールをインストールする必要は無く、R プロシジャは使用許可されたソフトウェアの WPS Core の一部であるため特別なライセンスも必要ありません。ただし、WPS には R が同梱されていない ため、 R プロシジャを使用するには R をご使用のコンピューターへインストールする必要があります。 注 : このドキュメントが書かれている時点では R のバージョン2.15.x と 3.x の二つが主に使用されてい ます。WPS ソフトウェアはどちらのバージョンとでもご使用いただけます。 異なるプラットフォームに R をインストールするには各プラットフォームについての注意をご参照ください。 R_HOME 環境変数を設定する インストールされているバージョンの R の位置を確定するために R_HOME 環境変数が設定されている必要 があります。規定の R のインストール場所を使用する場合、 WPS が場所の情報を Windows のレジストリから 取得できるため、この設定は Windows プラットフォーム上では必要ありません。しかし、複数の R がインストー ルされている場合、規定の場所をこの変数によって上書きすることができます。 R_HOME 環境変数の設定方法はインストールした R とその使用法によって異なります。 options グロー バルステート メントを通して R_HOME を設 定 WPS サーバー 起動環境変 数を通して R_HOME を設 定 UNIX シェル のプロファイ ルスクリプトを R_HOME に設 定する R_HOME をオ ペレーティング システム上でシ ステムレベルの 変数として設定※ スタンドアロンのワークステー ションを使用 はい はい はい はい スタンドアロンのサーバーを使 用 はい はい はい はい サーバーへリモートデスクトップ 接続を使用 はい はい はい はい 該当しない はい はい インストールと使用方法 ワークステーションとサーバー間 はい で WPS Link を使用 ※システムレベルの変数設定方法はご使用のオペレーティングシステムのドキュメントでご確認ください。 9 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 注 : ご使用のプラットフォーム上でオペレーティングシステムに R_HOME 環境変数を設定しているとき は、下記コードを含む SAS 言語によって記述されたプログラムによっていつでも変数を確認できます。 %let EnvVar = %sysget( R_HOME ); %put "R_HOME is set to &EnvVar"; options グローバルステートメントを通して R_HOME を設定 R_HOME 環境変数の最も簡単な設定方法は options グローバルステートメントを WPS プログラム内で 使用することです。 1. R プロシジャの前に下記のコードを呼び出して、R インストールのパスを実際に使用しているものに置き換 えてください。 options SET=R_HOME "C:\Program Files\R\R-2.15.3"; これが残りの WPS セッションのための R_HOME 環境変数を設定します。この方法を取ると下記のように 一つの WPS セッションの中で複数のバージョンの R を使用できるという有利な点があります。 options SET=R_HOME "C:\Program Files\R\R-2.15.3"; proc r; submit; R.version endsubmit; options SET=R_HOME "D:\Program Files\R\R-3.0.3"; proc r; submit; R.version endsubmit; 2. このプログラムの HTML アウトプットは下記に類似したものになります。 _ platform arch os system status major minor year month day svn rev language version.string nickname x86_64-w64-mingw32 x86_64 mingw32 x86_64, mingw32 2 150.3 2013 03 01 62090 R R version 2.15.3 (2013-03-01) Security Blanket 10 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 と _ platform arch os system status major minor year month day svn rev language version.string nickname x86_64-w64-mingw32 x86_64 mingw32 x86_64, mingw32 3 0.3 2014 03 06 6512 R R version 3.0.3 (2014-03-06) Warm Puppy WPS サーバー起動環境変数を通して R_HOME を設定 R インストールの場所を設定する他の方法として、 WPS と R をインストールしている WPS サーバーの起 動オプションを使用して、 R_HOME 環境変数を設定する方法があります。 1. WPS と R をインストールしたワークステーションもしくは物理的なサーバーへログインしていることを確認 してください。 2. WPS ワークベンチを起動してください。 3. WPS サーバーエクスプローラータブのローカルサーバーを右クリックして設定を選択してください。 プロパティー:ローカルサーバーというダイアログが表示されます。 4. システムオプションの下にある環境変数という項目が、このダイアログの左側で選択されていることを確認 してください。 5. 新規ボタンをクリックし、環境変数を追加してプロパティウィンドウのOKをクリックしてください。 6. 変更を適用するためにサーバーの再起動を促されます。 間もなくサーバーが再起動され、 Libraries と Filerefs がそのサーバーへ再び関連付けられたことをWPS サーバーエクスプローラーが示します。WPS が R のローカルのインストール場所を確定する必要がある 場合、この新しい環境変数が使用されます。 UNIX シェルのプロファイルスクリプトを R_HOME に設定する シェルのプロファイルスクリプトに R_HOME の値を設定するのが UNIX プラットフォームにとっては確実な方 法です。 例えば環境変数はユーザーの~/.bashrcファイルに設定することができます。 注 : Mac OS X のアプリケーションの起動方法が起因して WPS Workbench を Mac OS X の環境で 起動する場合はこの方法を使用できません。 11 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 各プラットフォームについての注意 Windows 標準の Windows 用バイナリディストリビューションを R プロジェクトのウェブサイトからインストールする必要 があります。 http://www.r-project.org/からダウンロードできるパッケージには32ビットと64ビットバージョンの R が含まれて いるため、32ビットと64ビットどちらの WPS のバージョンにも使用することができます。 規定では R は Windows のレジストリにインストール場所を保存するため、 WPS はそれを読み取り最近イン ストールされたバージョンを確認します。これはインストールされた最新の R のバージョンになり、この場所を 確定するのに WPS に特別な設定をする必要はありません。しかし、複数のバージョンの R をインストールし ており特定のバージョンを WPS が使用するように指定したい場合、options グローバルステートメントを通 して R_HOME を設定もしくはWPS サーバー起動環境変数を通して R_HOME を設定のどれかの方法で R_HOME 環境変数を設定することができます。 UNIX - ソースをダウンロードして R をビルドする UNIX プラットフォーム用の R バイナリディストリビューションには規定では必要な共有ライブラリが含まれて おらず、また前もってビルドされた R のバイナリディストリビューションを R プロジェクトのウェブサイトからダウ ンロードすることもできません。 UNIX プラットフォーム上では WPS にインターフェイスで接続するための共有ライブラリを含めるために R を ソースからビルドする必要があります。次のダウンロードとインストールの処理の説明では R-3.2.1 を実際に ご使用のバージョンで読み替えてください。 注 : R をソースコードからビルドする前に最低限のライブラリが前もってインストールされている必要が あります。そのライブラリとは build-essential と Ubuntu の JDK に相当するライブラリです。疑問がある 場合は R のドキュメントを確認するか R ウェブサイトhttp://www.r-project.org/をご確認ください。 1. R のソースコードをダウンロードしてください。 http://cran.ma.imperial.ac.ukの Source Code for all Platforms という項目から最新の R をダウンロー ドすることをお勧めします。 2. ソースコードのバンドルを解凍してください。 tar -xzf R-3.2.1.tar.gz これで R-3.2.1 というディレクトリーが作成されます。 3. 新しいディレクトリへ移動しビルドプロセスを設定します。 ./configure --enable-R-shlib --prefix=$HOME/R これでビルドシステムが R をサブディレクトリーに配置しこのため、 R をインストールするためにスーパー ユーザーである必要がなくなります。 12 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 4. R ソフトウェアをコンパイルしリンクする。 make 5. R ソフトウェアをインストールする。 make install R のインストールについて詳細は R のドキュメントでご確認ください。 ./configure は --enable-R-shlib オプションと共に実行することによって WPS が R のインストールを正 確に使用できるという点が重要です。 Mac OS X R プロジェクトのウェブサイトから R のバイナリディストリビューションを直接インストールすることができます。 WPS が R の場所を確定するために R_HOME の値がセットされている必要があります。設定は /Library/ Frameworks/R.framework/Resources となります。この設定では初期設定バージョンの R を使用しま す。 注 : Mac OS X 上でのアプリケーションの起動方法が起因して R_HOME をシェルプロファイルスクリ プトに設定できません。 特定のバージョンの R を使用するには、設定をそれに合わせて変更できます。例えば /Library/ Frameworks/R.framework/Versions/3.0/Resources となります。 13 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 基本的な操作 WPS と R のインストールと設定を確認する WPS と R のインストールと設定は短いプログラムを作成し実行して確認できます。このプログラムは PROC R のシンタックスの手始めにもなります。 1. 新規プログラムファイルを作成して下記のコードを貼りつけて保存してください。 proc r; submit; x <- (1:10) print(x) endsubmit; run; 2. ツールバーの実行アイコン をクリックしてプログラムを実行してください。 プログラムの実行が完了するとローカルサーバーのログに下記例のような要素を含んでいます。 4 proc r; 5 submit; 6 x <- (1:10) 7 print(x) 8 endsubmit; NOTE: Using R version 3.0.3 (2014-03-06) from D:\Program Files\R\R-3.0.3 NOTE: Submitting statements to R: > > x <- (1:10) print(x) NOTE: Processing of R statements complete 9 run; NOTE: Procedure r step took : real time : 0.406 cpu time : 0.015 R のバージョン番号と使用している R の場所を WPS ソフトウェアが出力します。これは PROC R の呼び 出しの度に行われます。標準の R のソースコードが WPS 実行ログにも含まれており、ローカルサーバーの HTML アウトプットは print(x) ステートメントの下記アウトプットを含んでいます。 [1] 1 2 3 4 5 6 7 8 9 10 WPS と R 間のデータの受け渡し EXPORT と IMPORT ステートメントで WPS と R 間でのデータのやり取りを行うことが可能です。 14 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 EXPORT ステートメントの使用 R プロシジャの EXPORT ステートメントは WPS 環境から R 環境へデータを転送するために使用します。 前段階で SAS 言語を使用して生成されたデータを R の文脈内で使用するときに通常これは必要になります。 1. 新規のプログラムファイルを作成し、下記のコードを貼り付けてファイルを保存してください。 data source; do x=1 to 10; y=ranuni(-1); output; end; proc r; export data=source; submit; str(source) print(source) endsubmit; run; 2. ツールバーの実行アイコン をクリックしてプログラムを実行して、HTML アウトプットを確認してください。 通常、 EXPORT ステートメントは WPS データセットと同じ名前の R のデータフレームを作成します。この データフレームには元の WPS データセットと同じ列があります。 'data.frame': 10 obs. of 2 variables: $ x: num 1 2 3 4 5 6 7 8 9 10 $ y: num 0.67611 0.15623 0.00499 0.76839 0.71394 ... x 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 y 0.676114940 0.156228246 0.004988594 0.768386004 0.713939278 0.004663629 0.714222821 0.453278570 0.613537647 0.072553599 IMPORT ステートメントの使用 R プロシジャの IMPORT ステートメントは R 環境から WPS 環境へデータを取得するために使用されます。 IMPORT はベクトル、行列、データフレームを受け取ってそれらを WPS データセットに適合するように変換し ます。 15 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 1. 新規のプログラムファイルを作成し、下記のコードを貼り付けてファイルを保存してください。 proc r; submit; x <- (1:10) endsubmit; import R=x; proc print data=x; run; 2. ツールバーの実行アイコン をクリックしてプログラムを実行して、HTML アウトプットを確認してください。 proc print ステートメントからの HTML アウトプットは下記のようになります。 注 : x という R のベクトルが SAS 言語での x というデータセットへ変換されています。 Obs x 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 R の画像の使用 R セッションを開始すると、標準のグラフィックデバイスで生成された画像が WPS セッションの標準 ODS HTML に取得されるように WPS が R を設定します。 次のプログラムは前例のプログラムに簡単な線形回帰分析とグラフを追加したものです。 1. 新規のプログラムファイルを作成し、下記のコードを貼り付けてファイルを保存してください。 data source; do x=1 to 10; y=ranuni(-1); output; end; PROC R; export data=source; submit; model <- lm(source$y ~ source$x) print(model) par(mfrow=c(2, 2)) plot(model) endsubmit; run; 16 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 2. ツールバーの実行アイコン をクリックしてプログラムを実行して、HTML アウトプットを確認してください。 R セッションで生成され WPS のアウトプットへ送られたグラフと共に、このアウトプットは R の出力結果を 含んでいます。 Call: lm(formula = source$y ~ source$x) Coefficients: (Intercept) source$x 0.5344 0.0241 17 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 R の追加パッケージの使用 標準の R インストールには含まれない追加パッケージを使用するには、インタラクティブなコマンドライン環 境を使用してパッケージをインストールし、そのパッケージの基本的な操作を WPS R プロシジャ内で使用す る前に確認することをお勧めします。 注 : WPS が起動した R セッションは WPS プロセスの環境変数のリストを引き継ぎます。ご使用のコン ピューター上で WPS ワークベンチを実行すると、ローカルの WPS サーバープロセスが引き続きワーク ベンチのプロセスから環境変数を引き継ぎます。サードパーティー製のソフトウェアを R で使用するため にインストールすると、 PATH 環境変数に追記が必要になり、これによって変更を適用するために WPS ワークベンチを再起動する必要があります。ローカルサーバーをワークベンチで再起動しただけでは環 境変数の変更は適用されません。 18 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 リファレンス EBNF(Extended Backus-Naur Form)と構文図はプログラム言語のシンタックスを説明する表記であり、この ガイドでは言語シンタックスを記述するために使用されています。 EBNF と構文図の読み方 EBNF は文字での表記であり、構文図はグラフィックでの表記です。これらはリファレンスの情報の一部であり、 プロシジャやステートメントなどの重要な言語構造を伴っています。 文字表記の EBNF とグラフィック表記の構文図はどの場合も同じ内容を表しています。二つは単純に同じシン タックスの概念を異なる方法で表しているに過ぎません。 各言語概念の記述は EBNF の表記で始まり、次に対応する構文図が続きます。 入力する文字 表示されている文字をそのまま入力しなければならない場合は EBNF と構文図共に次のようなタイプライター 風の文字で表示されています。 OUTPUT ; OUTPUT ; この例では OUTPUT というキーワードにセミコロン ; が続くシンタックスの一部を記述しています。EBNF バージョンではこの部分が単純に OUTPUT; という文字になり、構文図では のようになっ ています。 通常は大文字小文字の区別は重要ではありませんが、このリファレンスではキーワードには大文字を使用して います。 プレースホルダーアイテム 状況によって適切なものに置き換えるプレースホルダーの文字は、下記のようにイタリック体の小文字で表示さ れます。 OUTPUT data-set-name ; OUTPUT data- set- nam e ; ここではキーワードの OUTPUT は文字通りに入力しますが、 data-set-name はプログラムに適したものに置き 換えられる必要があります。この場合オブザベーションを追加するためのデータセットの名前です。 任意での追加 アイテムを追加するのが任意の場合は、メインの行から下側に枝分かれして表記されます。 19 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 OUTPUT [ data-set-name ] ; ; OUTPUT data- set- nam e 注 : EBNF では任意の追加は[ ]で示され、構文図では直線から枝分かれして示されます。 繰り返し 繰り返すことの出来るアイテムは折り返しのループで示され、任意で複数のインスタンス間に置くセパレーター を指定します。 OUTPUT { data-set-name } ; OUTPUT data- set- nam e ; 上記ではキーワードの OUTPUT は文字通り入力されるべきであり、さらにこのキーワードは一つもしくはそれ以 上の data-set-name の繰り返しが続きます。この場合、スペース以外のセパレーターは必要ありません。EBNF ではこのような繰り返しは { } で表記されます。 セパレーターが必要な場合は、構文図の折り返しループの上に次のように示されます。 function-name ( { <,> argument } ) ; , function- nam e ( argum ent ) ; 注 : EBNF では繰り返しの区切り文字がある場合は < と > で括ります。この括弧で境界をはっきりさ せます。 選択肢 複数の選択肢から一つを選択する場合、次のように示されます。 GETNAMES [ YES | NO ] ; GETNAMES YES ; NO EBNF では選択肢は OR の論理記号である | を各選択肢の間に記述して示されます。上記の例ではキー ワード GETNAMES は文字通りに入力し、キーワードの YES もしくは NO のどちらかを入力します。 細分化 シンタックスを一つの構文図に収めるには複雑すぎる場合は、構文図が細分化されることがあります。 20 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 PROC PRINT { option } PROC option PRINT option [ DATA = data-set-name | LABEL ] DATA = data- set- nam e LABEL 上記ではシンタックス全体が、分割された EBNF と構文図に細分化されています。一番目は PROC PRINT に一つもしくは複数の option が続くことを示しており、このオプションが二番目のダイアグラムで詳細に表記さ れています。 EBNF の読み方 下記の表でこのリファレンスで使用されている EBNF の表記方法を要約しています。 表記方法 説明 [] 任意の要素 {} 繰り返される要素のグループ <> 繰り返されるアイテムの反復を囲むセパレーター | [ ] で括られた選択肢グループ内のどれかということを 表しており、例えば下記のようになります。 • [A|B] - A もしくは B のどちらかを選択 • [A|B|] - A もしくは B もしくは無し(グループの選 択を省く)の内どれかを選択 "" 例えばグループのタイトル等のコメント monospaced キーワードとセパレーター italics 変数 太字 細分化の時のように要素を自身のダイアグラム内で表示 する 下線 デフォルトの選択 EBNF 表記のセパレーターとして ( ) は使用されず、このため丸括弧は常にシンタックスの定義の一部で す。一方で [ ] 、 < > 、 { } は SAS 言語のシンタックスの一部では無いため、EBNF 表記のセパレー ターとして混乱無く解釈できます。 21 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 R プロシジャ R プロシジャは PROC R ステートメントによって呼び出され R で書かれたプログラムを実行することができ ます。 対応しているステートメント • PROC R • ASSIGN • EXECUTE • EXPORT • IMPORT • LOAD • SAVE • SUBMIT PROC R PROC R [ { option } ] ; PROC R ; option option [ GMTOFFSET = "+/-HH:MM" | TIMESASCHRON | LIB = default-library | KEEP | TERMINATE | TERM ] GMTOFFSET = "+ / - HH:MM" TIMESASCHRON LIB = default- library KEEP TERMINATE TERM GMTOFFSET="+/-HH:MM" ASSIGN や EXPORT 、 IMPORT ステートメントを使用して WPS と R の間で日付/時刻の値を動かすと きに GMT が適用されるようにオフセットを設定します。WPS の日付/時刻の値は暗黙的にタイムゾーンを含 んでいないのに対して、 R では関連するタイムゾーンの UTC (Coordinated Universal Time) で表されていま す。 TIMESASCHRON R の時刻の値を chron クラスを使用して表すかどうかを管理します。通常 R では時刻の値は真夜中から秒 計算で表されますが、任意で chron パッケージを使用することも可能です。ただし、このパッケージは標準の R のインストールには含まれていません。 22 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 このオプションは ASSIGN と EXPORT ステートメントに影響します。 LIB=default-library EXPORT や IMPORT 、 LOAD 、 SAVE ステートメントで使用するデフォルトのライブラリを指定します。この オプションの影響の詳細については、各ステートメントの説明で記述しています。 KEEP R アプリケーションの起動を最後のプロシジャの段階まで保って、次の PROC R の呼び出しでも使用するか どうかを指定します。これは RKEEP システムオプションの代わりとしても使用できます。デフォルトの動作では プロシジャの最後の段階で R アプリケーションを終了します。 TERMINATE プロシジャの最後の段階で R アプリケーションを終了するように設定します。これはデフォルトの動作ですがこ の動作は RKEEP によって変更されている可能性があります。 TERM TERM は TERMINATE のエイリアスです。 PROC R の実行例 proc r; submit; R.version endsubmit; run; ASSIGN R ベクトルの値に値を割り当てるには ASSIGN ステートメントを使用することができます。 ASSIGN r-object-name = [ value | ( { <,> value } ) ] ; ASSIGN r- object- nam e value , = ( value 23 ; ) R プロシジャのユーザーガイドとリファレンス バージョン 3.2 value [ int-literal | float-literal | date-literal | datetime-literal | time-literal | string-literal ] int- literal float- literal date- literal datetim e- literal tim e- literal string- literal 注 : 右側の値の割り当ては全て同じタイプでなければいけません。例えば、全て整数もしくは全て文字列 であるというようにです。 作成された R ベクトルのタイプは下記のように供給される値によって異なります。 供給された値のタイプ 作成される R ベクトルのタイプ 整数 整数 浮動小数 真 日付 Date クラスと共に真 日付/時刻 PROC R ステートメントに与えた GMTOFFSET オプションによって調 整された POSIXct のクラスと共に真 時間 times のクラスと共に真 文字列 文字列 通常これらのステートメントは、 R プログラムにパラメターを渡すために使用します。右側の割り当ての値はし ばしばマクロ変数の拡張もしくは、マクロの実行によって生成されます。この機能によって SUBMIT ブロック内 でのマクロ拡張の実行を行う必要が劇的に少なくなります。 R オブジェクトの名前は WPS 言語内で通常の識別子として指定されます。R オブジェクトを作成した 時の大文字はそのまま区別されます。必要であれば R オブジェクトを作成するのに名前リテラルを使用 ("r.object.name"n 内で)し、それ以外は SAS 言語内で有効にならないようにすることができます。 R オブジェクトへの値の割り当て例 %let parm=15; proc r; assign parm=&parm; submit; x<-sample(1:3, parm, replace=TRUE) print(x); endsubmit; run; 24 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 EXECUTE R プロシジャの EXECUTE ステートメントはファイル内の R プログラムを実行をします。 EXECUTE "filename" ; "filenam e" EXECUTE ; 注 : EXECUTE ステートメントを使用すると、 SUBMIT ステートメントの代わりになります。このステート メントのおかげで R コードを異なるファイルへ記述することができます。これは同じプログラムコードをイ ンタラクティブな R 環境で直接実行することができるため便利です。この場合、相対パス名は WPS プロ セスのカレントディレクトリから相対的に解決されます。 ファイルに格納されている R プログラムの実行例 ソースファイルmodel.rの内容は次のようになります。 model <- lm(source$y ~ source$x) print(model) par(mfrow=c(2, 2)) plot(model) R プロシジャ実行例は次のようになります。 data source; do x=1 to 10; y=ranuni(-1); output; end; PROC R; export data=source; execute "model.r"; run; EXPORT R プロシジャの EXPORT ステートメントは WPS データセットから R のデータフレームを作成します。 EXPORT { option } ; option EXPORT ; option [ DATA = wps-data-set | [ R | FRAME ] = r-object-name ] DATA = wps- data- set R = r- object- nam e FRAME 25 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 DATA エクスポートするデータセット名を他の必要なデータセットオプションと共に指定します。このオプションは必須 です。 R もしくは FRAME 任意で R 環境のオブジェクトに名前を指定します。省略すると、R オブジェクトの名前はデータセットのメン バー名から取られます。 データセットのオプションはインプットするデータセット内で通常通り指定することもできますが、 WHERE 句も しくは DROP リストを R へエクスポートする前にデータセットへ適用すると便利です。 注 : WHERE 句を適用するもしくは順次ライブラリかビューからデータセットをエクスポートする(言い換 えればデータセットのオブザベーション数がわからないとき)には、 R データフレームを作成する前に正 確なオブザベーション数を計算するために、まず追加の資源としてスプールするデータセットが必要で す。 WPS データセットには数値と文字の二種類の変数があります。数値の列はさらに詳細な種類を示すための フォーマットを追加で使用することもできます。R のベクトルのタイプは以下のようにして作成されます。 WPS の変数のタイプ 作成される R ベクトルのタイプ 文字 標準の文字列。 日付フォーマットが適用された数 値変数 Date のクラスを割り当てた実数の R ベクトル。 日付/時刻フォーマットが適用さ れた数値変数 実数の R ベクトルが作成され POSIXct のクラスが割り当てられま す。このクラスの値は1970年1月1日(協定世界時)からの秒計算で表さ れています。この値は GMTOFFSET オプションを PROC R 呼び出し 時に渡すことで SAS 言語の日時の値はローカル時間であるのに対して R の POSIXct クラスの値は協定世界時であるということを考慮し調 節することができます。 時間フォーマットが適用された数 値変数 PROC R の呼び出しで TIMESASCHRON オプションが指定されてい るかどうかによって二つ選択肢があります。デフォルトでは標準の実数の R ベクトルが作成され、このベクトルには特別なクラスは割り当てられ ていません。一方で、 TIMESASCHRON オプションが指定されている とベクトルは times のクラスに割り当てられます。R の chron パッ ケージ(times クラスを提供します)は標準の R インストールには含ま れていませんが、これで時刻の値を処理することができます。 その他の数値変数 標準の実数の R ベクトルが作成され特別なクラスは割り当てられませ ん。 数値を WPS から R へ渡すとき EXPORT ステートメントは特別な欠損値 .I と .M を処理して R の値 Inf と -Inf を作成します。その他の欠損値は NaN として R に渡されます。 26 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 WPS から R へデータのエクスポートの例 この例では二つの数値列を含んだデータセットを作成しそれを R へエクスポートします。 data source; do x=1 to 10; y=ranuni(-1); output; end; proc r; export data=source; submit; str(source) endsubmit; run; 結果のデータフレームは下記のようになります。 'data.frame': 10 obs. of 2 variables: $ x: num 1 2 3 4 5 6 7 8 9 10 $ y: num 0.371 0.924 0.59 0.434 0.962 ... IMPORT R プロシジャの IMPORT ステートメントは R オブジェクトから WPS データセットを作成します。 IMPORT { option } ; option IMPORT ; option [ DATA = wps-data-set | [ R | FRAME ] = r-object-name ] DATA = wps- data- set R = r- object- nam e FRAME DATA 任意でデータセットを保存する場所を設定します。これはデータセットオプションを含むこともできます。省略す るとデータセットは通常のライブラリ(WORK もしくは PROC R 実行時に LIB= で指定されたライブラリ)に 保存されます。 R もしくは FRAME インポートする R オブジェクトの名前を指定します。これは引用符で囲まれた文字リテラルではなく識別子の一 部でなくてはなりません。通常 SAS 言語では無効な識別子の名前を指定するために、ここでは名前リテラルが 使用されます。このオプションは必須です。 27 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 IMPORT の変換規則 R 関数の as.data.frame を使用してデータフレームになるように強制できれば、どのようなオブジェクトも インポートできます。 指定した R オブジェクトをデータフレームにするのに失敗するとエラーが出ます。WPS は R の論理、整数、実 数、文字タイプの列をインポートできます。さらに因子もインポートできます。論理、整数もしくは実数タイプの 列は WPS データセットで数値列へ変換されます。文字と因子タイプの列は文字の列へと変換されます。変換 ルールの詳細を以下で説明しています。 論理値 論理タイプのベクトルの値は次のように変換されます。 R の値 WPS の値 真 1 偽 0 NA . 整数値 R の特別な値 NA は R での最少整数値(-2147483648)を表し、 SAS 言語の欠損値へ変換されます。 実数値 R 言語には三つの特別な実数値 NA 、 NaN 、 Inf があります。R では NA は欠損値(有効ではない)と なり、 Inf は無限大(たとえばゼロで割った)を表し、 NaN は非数値(例えば0/0の結果)を表しています。こ れらの値は次のように変換されます。 R の値 WPS の値 NA . NaN . +Inf .I -Inf .M 日付値 Date の R クラスを持った整数もしくは実数の列にはこれらに特別な処理を施しています。WPS データセッ ト内の変数は DATE9 のフォーマットが与えられ、インポートされたときにその値は R と WPS の異なる基準時 点を考慮し調整されます。R の Date クラスの値は1970年1月1日から数えた日を表すのに対して SAS 言語 では基準時点が1960年1月1日です。 日付/時刻値 WPS は POSIXct クラスを持つ実数列に特別な処理を適用します。R のこのクラスの値は協定世界時 の1970年1月1日からの秒計算を表しています。このクラスの列がインポートされるとその値は SAS と R の異 28 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 なる基準時点を考慮し調整されます。WPS データセットのこの列には DATETIME19 フォーマットが適用され ます。この値は PROC R 呼び出しでの GMTOFFSET オプションで SAS 言語の日時の値はローカル時間で 決定されるのに対して R の値は協定世界時であるということを考慮し調節することができます。 時間値 WPS は times クラスを持つ実数の列に特別な処理を適用します。WPS データセット内の列には TIME8 フォーマットが適用されます。 文字値 WPS は文字の列を精査し最長の値を発見し、その値を WPS の列の長さに割り当てます。文字の列内の個々 の値は R では無効(NA)になることもあり、WPS ではこれらは文字の欠損値へと変換されます(この値は空白に なります)。このため WPS へインポートするときは " " と NA に違いはありません。 因子値 R 因子は整数列の特別な形式であり、列内の整数値は一意の値のリストへとインデックスされ、列の属性として 格納されます(これは R で levels と呼ばれています)。WPS へインポートされるときこれらはデータセットの文 字変数へと変換されます。levels のリストの一番長い文字列が列の長さとなります。 R から WPS へのデータのインポート例 proc r; submit; x<-sample(1:3, 15, replace=TRUE) endsubmit; import r=x data=demo_import; run; proc print data=demo_import; run; LOAD LOAD と SAVE ステートメントで R オブジェクトを直列化して一時的もしくは永続的に WPS データライブラ リへ格納して、同じもしくは後続の WPS セッションで後で直列化復元することができます。前もって SAVE ス テートメントで保存した R オブジェクトを LOAD ステートメントが直列化復元します。 LOAD { option } ; LOAD option ; 29 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 option [ [ CATALOG | CAT | C ] = [ libname . ] catalog . entry | [ R | FRAME ] = r-object-name ] CATALOG catalog = libnam e CAT . entry . C R = r- object- nam e FRAME CATALOG か CAT もしくは C R オブジェクトを保存する場所を提供します。このオプションは必須です。ライブラリが CATALOG オプション に指定されていなければ、 PROC R の呼び出し時に LIB= によって既定のライブラリが指定されるか、そう でなければ通常と同じように USER もしくは WORK ライブラリが使用されます。 R もしくは FRAME R オブジェクトの名前が SAS 言語の識別子のルールに適合しない場合は、名前リテラルのシンタックス(例え ば、 "r.object.name"n)を使用して R オブジェクトの名前を指定することができます。名前の大文字小文 字の別は R オブジェクトを作成するときに保存されます。このオプションは必須です。 LOAD ステートメントの使用例 proc r; load cat=catalog.entry r='target.object'n; run; SAVE LOAD と SAVE ステートメントで R オブジェクトを直列化して一時的または永続的に WPS データライブラ リへ格納し、同じもしくは後続の WPS セッションで後に直列化復元できます。SAVE ステートメントで R オブ ジェクトを直列化し、それをカタログのエントリー内に格納します。 SAVE { option } ; SAVE option ; 30 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 option [ [ CATALOG | CAT | C ] = [ libname . ] catalog . entry | [ R | FRAME ] = r-object-name | DESCRIPTION = "Catalog_entry_description" ] CATALOG catalog = libnam e CAT . entry . C R = r- object- nam e FRAME DESCRIPTION = "Catalog entry description" CATALOG か CAT もしくは C このオプションは必須であり R オブジェクトが保存される場所を提供します。 ライブラリが CATALOG オプ ションに指定されていなければ、 PROC R の呼び出し時に LIB= によって既定のライブラリが指定される か、そうでなければ通常と同じように USER もしくは WORK ライブラリが使用されます。 R もしくは FRAME 保存する R オブジェクトの名前を指定します。R オブジェクトの名前が SAS 言語の識別子のルールに適合し ない場合は名前リテラルのシンタックス(例えば、 "r.object.name"n)を使用して R オブジェクトの名前 を指定することができます。 R は大文字と小文字を区別するため、名前と R オブジェクトの大文字小文字は一 致している必要があります。このオプションは必須です。 DESCRIPTION カタログに保存された記述文字列を提供します。この記述は PROC CATALOG CONTENTS ステートメントか らのアウトプットで表示されます。 注 : カタログのエントリーには ROBJECT タイプがあります。 WPS カタログへの R オブジェクトの保存例 proc r; save cat=catalog.entry r=’source.object’n; run; SUBMIT R プロシジャの SUBMIT ステートメントは R 言語のインラインプログラムコードを実行することができます。 31 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 SUBMIT [ { symbol = "substitution-value" } ] ; { R-language-statement } ENDSUBMIT ; SUBMIT ; R- language- statem ent sym bol = "substitution- value" ENDSUBMIT ; 注 : R プログラムのコードを変更する必要はありません。通常の R 言語のプログラムコードをコピーして 貼り付けて SUBMIT と ENDSUBMIT ステートメントで囲み、それを R プロシジャから実行することが 可能です。 R ソースコードは SUBMIT ステートメントの後に改行してから開始しなければならず、 ENDSUBMIT ステー トメントは行の最初に記述しこのステートメント以外はその行に記述できません。 一つの PROC R の実行内で複数の SUBMIT ブロックを記述できます。各 SUBMIT ブロックが遭遇する毎 に実行されます。必要であれば SUBMIT ブロックを他のステートメントと交互に配置することもできます。 マクロ処理 R 言語の性質上 SUBMIT と ENDSUBMIT ステートメントの間の行は一言一句違わずに R 環境へ渡されま す。 SUBMIT と ENDSUBMIT ステートメントの間のマクロ処理は中止されます。この理由としては下記のよう に複数挙げられます。 • R 言語は & と % をシンタックスの一部として使用しています。R ソースコードのマクロ処理を試みると正 当な R シンタックスが SAS 言語のマクロの呼び出しもしくは WPS が参照するマクロ変数として間違って 解釈されるという可能性があります。 • R 言語では改行するまでコメントとしてその列を扱うことができるため、このコメントの内容は例えば相手が 無いアポストロフィを含むことがあります。これは R のソースコードをマクロ処理するために必要な、標準の SAS 言語の構文解析規則を使用した R シンタックスのトークン化を難しくさせます。 また、マクロプロセッサの動作とソース行の処理方法により、マクロを使用して SUBMIT ブロックを生成するこ とはできません。これは SAS 言語のマクロ内に SUBMIT は出現できないということです。しかし、 %INCLUDE ステートメントを通して指定されたファイル内には SUBMIT ブロックを記述することができます。マクロプ ロセッサの実行によって PROC R を生成する必要がある場合、 EXECUTE ステートメントを使用するか SUBMIT ブロックの内容を別のファイルに置いて %INCLUDE ステートメントを通して指定する必要がありま す。 テキストの代入 マクロプロセッサの代わりに単純なテキストの代入機能が提供されています。R に渡す前に SUBMIT と ENDSUBMIT の間の行に限られた組み合わせの代入を適用することができます。この代入は SUBMIT ス テートメントに追加します。この代入のシンタックスは通常のマクロ変数の代入に似ています。しかし、再走査は せず単純な一階層だけのマクロ変数形式のシンタックスのみ使用できます。 &symbol &symbol. 32 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 このような単純なシンタックスで SUBMIT ステートメントへ代入のシンボルのみが明示的に記述されていた としても、予期しない代入が起こる可能性があります。これを避けるには R のサブミットコードに WPS で参照さ れる R オブジェクト名をシンボル名に使用しないことをお勧めします。「& と &&」は R では論理的な and オ ペレーターとして使用されます。SUBMIT ステートメントが次の R コードを含んでいる場合を考えてみましょう。 a>b&c<d もし c が代入シンボルとして定義されると、この表現内ではこれは予期しない c の代入となります。 R オブジェ クト名と衝突するのを避けるような名前を選択すると同時に、アンド(&)の両側にスペースを入れることでこれ を避けられます。 エスケープシンタックスは無く、代入のシンボルになるのを避ける方法もありません。次のような場合を考えて みましょう。 proc r; submit Goodbye="hello"; A <- "Hello&Goodbye" endsubmit; run; この場合、違うシンボルを使用しない限り代入を避けられません。アンドは R 内で論理オペレータとして使用す るようには特別なシンボルではないという事です。 下記例のように代入の値を通常のマクロプロセッサの機能を使用して生成できます。 proc r; submit Goodbye="hello"; A<-"&sym" endsubmit; run; R のインラインコードのサブミット例 proc r; submit; x <- (1:10) print(x) endsubmit; run; 33 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 さらに詳細な情報 シンタックスやセマンティクス、多数のアドオンパッケージを含むさらに詳細な情報を得る手始めとして、R プ ロジェクトのウェブサイトhttp://www.r-project.orgがあります。 34 R プロシジャのユーザーガイドとリファレンス バージョン 3.2 法律上の通知 Copyright © 2002-2016 World Programming Limited. 当社が全著作権を所有しています。この情報は機密でありすべて著作権保護の対象です。写真複写、録音もし くはいかなる情報記憶装置や情報検索システムを含む手段によって複写または転載をいかなる形式または手 段で電子的または機械的に行うことはできません。 商標登録 WPS と World Programming は欧州連合と他国において World Programming Limited の商標登録または商 標として登録されています。(r) または ® は共同体商標を示しています。 SAS もしくはその他 SAS Institute Inc. の製品もしくはサービス名は米国もしくは他国の SAS Institute Inc. の 登録商標または商標です。 その他全ての商標は関連する各所有者の資産です。 全般的な通知 World Programming Limited は SAS Institute とは一切関係がありません。 WPS は SAS System ではありません。 このドキュメントで使用されている「SAS 言語」という表現は SAS というコンピューター言語を一般的に記述す るために使用されています。 WPS には第三者に開発されたソフトウェアが含まれています。詳細は WPS インストールに含まれている THANKS もしくは acknowledgments.txt でご確認いただけます。 35
© Copyright 2024 Paperzz