AlteryxのRツールにおける入出力データの構造と形式

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

相変わらずどれほど需要があるかわからないけど書き続けるAlteryxのRツールに関する記事。 今回は、Rツールの出力の構造とAlteryxでそれをどのように受け取るのかついて書かせていただきます。

Rのデータ構造とAlteryx出の入出力

Rは統計解析のために作られた言語ということもあり、複数のデータをまとめて1つの変数で扱う仕組みが提供されています。 vector, data frame, listなど様々ありますが、それらはAlteryxでどのように扱われるのでしょうか?

Rツールを使ったことのある人であればピンと来るかと思いますが、Alteryxのread.Alteryx/write.Alteryx関数では基本的にはdata frameを想定します。 Rツール以外でのAlteryxのデータ持ち方が同じような形式になるため、これは直感的でわかりやすいですね。

data frame以外の扱い

では、data frame以外の構造のデータを扱う場合はどうなるのでしょうか? 入力/出力双方で見てみましょう。

read.Alteryxでdata frame以外を扱う

さて、まずは入力から見ていきましょう。 Alteryxで扱うデータ構造がdata frameと同じような形式ということもあり、read.Alteryx関数ではデフォルトでdata frame形式でデータを取得します。

これに対して、mode引数で他の型を指定できます。 ただしここで指定可能な型はdata.framelistのみとなります。

それぞれ、型の名前そのままなのでわかりやすいですね。 modeにdata.frameを指定した場合、はデフォルトの挙動と同じになります。

listを指定した場合は以下のような列名が名前となる名前付きのlistを受け取ります。

write.Alteryxでdata frame以外を扱う

read.Alteryxでは入力となるAlteryxでデータ構造が固定されているため、バリエーションとしては2通りのみでしたが、出力に関してはRで利用可能なデータ構造はそのままRツール内でも利用できるため、様々な構造のデータを出力できそうです。 それらの動きを見てみるために、以下の構造のデータをwrite.Alteryx関数にそのまま渡してみます。

  • vector
  • matrix
  • list

vector

まずは、Rで最も基本的なデータ構造であるvectorを出力してみましょう。

data <- c(1, 2, 3)
write.Alteryx(data, 1)

結果は以下のようになります。

各値が列方向に展開されて出力されます。

matrix

続いては、行列演算などを行う際に利用するmatrixを出力していみます。

data <- matrix(c(1, 2, 3, 4), nrow = 2)
write.Alteryx(data, 1)

結果は以下のようになります。

行列の構造そのままではなく、1次元に展開されたうえでvectorと同じような出力なっています。

list

最後に、listを出力してみましょう。

data <- list(c(10, 20, 30), c(1, 2, 3))
write.Alteryx(data, 1)

出力結果は以下のようにリストの番号ごとに列となって出力されます。

列名は、listの番号ではなく中の値に基づくものになっています。 これは、以下のように名前付きのリストにすることで、その名前を列名として出力することも可能です。

data <- list(a = c(10, 20, 30), b = c(1, 2, 3))
write.Alteryx(data, 1)

list内の各要素の要素数が異なる場合、以下のようにリサイクルされます。

data <- list(c(10, 20, 30, 40), c(1, 2, 3), c(100, 200))
write.Alteryx(data, 1)

ただし、通常のRのリサイクルと異なり、要素数が多い方のデータが少ない方のデータの倍数になっていない場合はエラーとなります。 例えば、以下のような出力はエラーとなります。

data <- list(c(10, 20, 30), c(100, 200))
write.Alteryx(data, 1)

おわりに

今回は、AlteryxとRツールで様々な構造のデータをやり取りする際の挙動を見てみました。 Rツールを使ったワークフロー作成の多くの場面ではdata frameを使ってやり取りするのが最も直感的ではありますが、Rの関数によってはlistで結果を返すものもあります。 そういった場面では、この仕組みを知っておくことで、Alteryxとの受け渡しが楽になる場面もあるかもしれません。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400