複数の名前を持つ列をスタックするこんにちは、みんな!
次のようなデータテーブルがあるとします。
A、B1、B2、C1、C2、D
1、2、3、4、5、16
6、7、8、9、10、16
11、12、13、14、15、16
それらを積み重ねて、新しいテーブルが次のように見えるようにしたいと思います。
A、B、C
1、2、4
1、3、5
6、7、9
6、8、10
11、12、14
11、13、15
3 つのリストがあります。1 つは保持する必要がある列を含むリストです: list_to_keep= {A}、list_to_stack_before= {B1,C1}、list_to_stack_after = {B2,C2}。
まず、新しい列名を持つ新しいリストを作成するスクリプトを書きました。
新しい列名 = {};
str = char(スタック前リスト);
newstr = replace(str,"", "", "_be_sam","");
new_column_names = parse(newstr);
次に、スタック関数をループしようとしましたが、常に行が追加されるだけです。通常の Stack 関数は、Stacked Data Column 引数に複数の名前を使用できないため、使用できません。この問題はどうすれば解決できますか?どうもありがとうございます。私は jmp を初めて使用します。
自動化とスクリプト作成Re: 複数の名前を持つ列をスタックするこんにちは、グレッグ、ご返信ありがとうございます!
私はスタック インターフェイスに精通しており、スクリプトをスタックするためにワークフロービルダーも使用しました。名前の変更に関する問題は、積み上げたい列が 3 つではなく 40 列近くあり、新しい測定値が入ってくると増加することが予想されることです。
おそらくリストを使用して列の名前を変更するスクリプトを作成できることに気付きましたが、これはあまり良い回避策ではなく、順序を間違えやすいようです。もっとスムーズな方法があることを期待していました。 「新しい列名」オプションでは複数の引数を使用できないのは非常に残念です。
最高
Re: 複数の名前を持つ列をスタックするD列を削除しますか?実際のデータテーブルでは、どの列を削除するかをどのように決定しますか?列 (スタック前およびスタック後) の命名規則は何ですか?これを JSL 経由で自動化するのはそれほど難しいことではありません。
*編集*
また、倍数は常に同じなのでしょうか?たとえば、B1 と B2 がある場合、常に C1 と C2 が存在するのでしょうか、それとも C3 も存在する可能性がありますか?もしそうなら、それはどのように処理されるべきですか?
Re: 複数の名前を持つ列をスタックするわかりました-
スクリプトが書けると良いですね。多くの列の名前を変更しないようにスケーラブルなものを探していることを明確にしていただきありがとうございます。
最初は余談/余談ですが、手動モードでの列名操作のヒントとコツですが、大規模です。これは迅速かつ強力です (ただし、慎重に行う必要があります)。
- 列ペインで、すべての列を選択します - 「コピー」(コピー バッファーにテキストを置きます)
- 別のデータ テーブル (またはスプレッドシートやワープロ プログラム) に「貼り付け」を行うと、列のリストがテキストとして作成されます。
必要に応じて操作します (所定の位置に編集テキストを入力し、プレフィックス/サフィックスを追加する数式列を作成します...何でも)...
- 編集したテキストの新しい列名のリストを「コピー」します
- 元のテーブルに戻ります。列の選択をクリアし、列ペインで列のリストを再選択します。編集した列名を上書きするには「貼り付け」をクリックします。
以前に提案されたテーブル操作方法に戻ります。
最下位文字が常に 1/2 である場合 (または少なくともスタックされる列ファミリーを示す場合)、これは 2 つのテーブル操作と 1 つの式で実行できます。アクションを反復可能にする必要がある場合は、これらのステップをスクリプト化するか、ワークフロー ビルダーでキャプチャすることができます。

最下位文字を除いて「ラベル」をトリミングする数式列を追加します

テーブルのトリミングされたラベルによるデータの「分割」....

Re: 複数の名前を持つ列をスタックするうわー、複数シリーズのスタックとスタック + 分割の間の素晴らしいリンクです。