Q77:集計の方法について
Q77-1:
サンプルのテーブルがあります。
列「process」の各名称(A-1,A-2...)ごとの列「w_time」の集計をする場合、たとえば、
A-1,92
A-2,250
A-3,46 ・・・
繰返し処理で「process」の名称を「条件=」などで組み合わせてコツコツ集計していく以外に効率的な方法はありますでしょうか?分類テーブルコンポーネント等利用できますでしょうか?
関連ファイル:sample.mzax
A77-1:
[分類テーブル作成]コンポーネントだけでは合計まで出すことができませんが、分類し、[基本統計処理(数値)]で一列毎の合計を出すという方法が考えられます。ただし項目と系列の組み合わせが一意でないと、同系列名の列が複数できてしまいますので、その場合は中・小項目なども使って分類する必要が出てきます。
[分類テーブル作成]の使い方については『エクセル連携導入チュートリアル』をご覧下さい。
[基本統計処理]はリスト型のデータを設定し、集計を行います。
以上2つのコンポーネントを使って、簡単にサンプルを作成してみましたので、掲載致します。
また、[文字列格納変数]の「matches」を使って、該当行だけ取り出し、[基本統計処理(数値)]で集計するということも考えれられます。
matchesにつきましてもサンプルを掲載致します。
関連ファイル:sample(分類・集計).mzax、テーブル検索.(matches).mzax
Q77-2:
分類テーブルコンポーネントを使用しての例大変参考になりました。使えそうだと思い、いろいろやってましたが、今一歩「作成例」の状態へ到達できませんでした・・・。
同様に、ラベル付きリスト変数を使っていろいろやってましたが、文字列検索コンポで抽出した値が列名付きのデータ値となっていて扱いずらい状態となってました。
(関連ファイルのテスト例)
列名を外したデータ値に変換するにはどうしたらよいのでしょうか?
関連ファイル:sampletest.mzax
A77-2:
[ラベル付きリスト用文字列検索]コンポーネントで検索した結果のリストは、要素の一つ一つがラベル付きリストとなっています。
元のデータから、条件に合ったラベル付きリストデータを抜き出したものが「検索にヒットしたデータリストを取得する」で得られるデータです。
[]で囲まれたデータの左側がラベル、右側がデータオブジェクトとお考え下さい。
入れ子のような状態になっているので、再度[ラベル付きリスト]に入れ、要素名を指定して抜き出し、最後にデータ部分だけを取り出します。
ただし[ラベル付きリスト用文字列検索]ではワイルドカードが付いた検索条件になっているので、希望のデータのみを抜き出せない場合もあります。
なお、Ver.2.4からは[テーブルサブセットフィルタ]に「列データの正規表現で行を選択する(int,String)」等のメソッドを追加しましたので、「matches」を使って検索し、条件に合うデータのある行を抜き出すことが[テーブルサブセットフィルタ]だけでできるようになります。
関連ファイル:sampletest改変.mzax
備考:「実現したい処理別」の「Q&A102」にも掲載。