R スクリプトの実行
Concept Information
Analytics テーブルを外部 R スクリプトで分析して返されたデータを使って、新しいテーブルを Analytics プロジェクト内に作成します。ソース データはデータ フレームとして R スクリプトに渡されます。このデータ フレームは同梱の関数を使って参照できます。
R での Analytics データの操作
Analytics 内から実行する R スクリプトを作成する場合は、ACL と R スクリプトの間でデータをやり取りする方法に習熟してください。Analytics に同梱されている R 関数を、作成する R スクリプト内で使用することで、RCOMMAND を正常に実行できます。
R スクリプトでの Analytics データの参照
Analytics テーブルは R データ フレームとしてスクリプトに渡されます。データ フレームはタブ形式のデータ オブジェクトであり、データの異なるモードまたは型の列を含むことがあります。
R スクリプトで Analytics によって作成されたデータ型を操作するには、acl.readData() 関数を呼び出し、返されたデータ フレームを変数に格納します。
# Analytics テーブルをデータ フレーム myTable に格納します。これはスクリプトを使用して参照できます
myTable<-acl.readData()
データ フレームのセルからデータを取得するには、次のアプローチのうちの 1 つを使用できます。
-
行と列の座標の使用:
# データ フレームの 1 行 2 列の値を取得します。
myTable[1,2]メモ
座標はコマンドで指定されたフィールドの順序に基づいているのであり、テーブル レイアウトや、現在開いているビューに基づいているのではありません。
-
行と列の名前の使用:
# データ フレームの 1 行 "myColumnTitle" 列の値を取得します。
myTable["1","myColumnTitle"]列の名前を使用するには、コマンドの KEEPTITLE オプションを指定する必要があります。
行は、"1"、"2"、"3" と命名されており、そのように増加します。名前と座標の組み合わせを使用することもできます。
Analytics へのデータの返送
データ フレームまたはマトリクスを Analytics に戻し、新しいテーブルを作成するには、次の構文を使用します。
# myNewTable データ フレームを Analytics に戻し、新しいテーブルを作成します
acl.output<-myNewTable
メモ
R スクリプトが終了するときに、データ フレームまたはマトリクスを Analytics に戻す必要があります。データ フレームまたはマトリクスの列には原子値のみが含まれ、リスト、マトリクス、配列、非原子オブジェクトがないことを確認します。値を Analytics データ型に変換できない場合は、コマンドが失敗します。
R データのマッピング
Analytics データ型は、Analytics プロジェクトと R スクリプトの間の翻訳プロセスを使用して、R データ型に変換されます。
| Analytics データ型 | R データ型 |
|---|---|
| 論理 | 論理 |
| 数値 | 数値 |
| 文字 | 文字 |
| 日付時刻 | 日付、POSIXct、POSIXlt |
パフォーマンスとファイル サイズ制限
R スクリプトの実行と返されるデータの処理にかかる時間は、入力データが 1 GB を超える場合には長くなります。R では、2 GB 以上の入力ファイルはサポートされていません。
また、R に送信されるレコード数もパフォーマンスに影響します。ファイル サイズは同じだがレコード数が異なる 2 つのテーブルでは、レコード数が少ないテーブルの方が処理が高速になります。
複数バイト文字データの処理
中国語のような、複数バイトの文字セットでデータを R に送信する場合、R スクリプトにシステムロケールを適切に設定する必要があります。複数バイトのデータのテーブルを R に正常に送信するには、R スクリプトの第 1 行に、次の関数が含まれている必要があります。
# ロケールを中国語に設定する例
Sys.setlocale("LC_ALL","Chinese")
Sys.setlocale( ) の詳細については、R ドキュメントを参照してください。
「Hello world」の例
Analytics コマンド
RCOMMAND FIELDS "Hello", ", world!"TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r"
R スクリプト(analysis.r)
srcTable<-acl.readData()
# ACL に返送するテーブルを作成
output<-data.frame(
c(srcTable[1,1]),
c(srcTable[1,2])
)
# 列名を追加して ACL にテーブルを返送
colnames(output) <- c("Greeting","Subject")
acl.output<-output
R スクリプトの実行
- メニューから、[分析 > R]を選択します。
[RCOMMAND]ダイアログ ボックスが表示されます。
- [R スクリプト]フィールドの横にある[参照]をクリックして、コンピューターにある実行対象の R スクリプトに移動します。
- [フィールドの選択]をクリックし、Analytics によって R スクリプトからアクセスできるようにされるデータ フレームに、1 つ以上のフィールドを追加します。
ヒント
データ フレームには、フィールドとして式も追加することができます。式を作成するには、[式]をクリックし、表示されるダイアログ ボックスで選択できる関数、フィールド、演算子を使用します。詳細については、式ビルダーの概要を参照してください。
- 省略可能。RCommand オプションのセクションでは、Analytics データを R スクリプトに送信する方法を定義します。
詳細については、RCOMMAND のオプションを参照してください。
- 省略可能。R スクリプトに送信されるレコードをフィルタリングするには、[If]をクリックし、[式ビルダー]ダイアログ ボックスを使って、フィルターとして使用する条件式を作成します。
式ビルダーを使用した式の作成方法の詳細については、式ビルダーによる式の作成を参照してください。
- 出力テーブルを指定するには、[転送先]をクリックして、[ファイル名]フィールドにテーブルの名前および関連する .FIL ファイルを入力します。
フォルダー エクスプローラーを使って、ソース データ ファイルの保存に使用したいフォルダーに移動します。
メモ
Analytics のテーブル名は、最長で 64 文字の英数字(拡張子 .FIL を含まない)に制限されます。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。
- 省略可能。ダイアログ ボックスの[詳細]タブで、RCOMMAND の範囲関連オプションを指定します。
詳細については、[詳細]タブを参照してください。
- RCOMMAND を実行するには、[OK]をクリックします。
[RCOMMAND]ダイアログ ボックスのオプション
RCOMMAND のオプション
| オプション | 説明 |
|---|---|
| フィールド名付きでエクスポートする | R スクリプトのデータ フレームのヘッダー値として、ソースの Analytics テーブルの列見出しを使用します。このオプションは、RCOMMAND に対して KEEPTITLE オプションを設定します。また、このオプションは、R スクリプト内で列名を使ってデータを取得したい場合に必要です。 |
| 列区切り | R スクリプトにデータを送信する際に、フィールド間の区切り文字として使用する文字。 |
| テキスト修飾子 |
R スクリプトにデータを送信する際にフィールド値を識別するテキスト修飾子として使用する文字。 |
[詳細]タブ
| オプション | 説明 |
|---|---|
| すべて | ビュー内のすべてのレコード(デフォルトの選択対象)を処理します。 |
| 先頭 | テーブル内の冒頭のレコードと、そのレコードから数えて指定された件数のレコードまでを処理します。 |
| 次へ |
テーブル内の現在選択されているレコードと、そのレコードから数えて指定された件数のレコードまでを処理します。 メモ "先頭" または "次" オプションで指定されたレコード数は、テーブル内の物理的な順番またはインデックス順のレコードを参照するもので、ビューに適用されたフィルターやクイック ソートは一切無視します。ただし、分析操作の結果ではすべてのフィルターを考慮します。 ビューでクイック ソートが実行されている場合、"次" は "先頭" のように動作します。 注意 現在のバージョンでは、RCOMMAND を実行する際、"次" の動作に問題があることが知られています。このオプションは使用しないでください。選択しているレコードに関係なく、レコード参照で最初のレコードが参照されるようにリセットされてしまう可能性があるためです。 |
| While |
WHILE ステートメントを使用すると、条件に基づいて主テーブル内のレコードの処理を制限できます。 指定した条件が true と評価される間のみ、ビュー内のレコードが処理されます。条件が false と評価されるとすぐに処理が終了し、それ以上レコードは判断されません。詳細については、式ビルダーによる式の作成を参照してください。 |