一意のエントリに基づいて、N 列のエントリを単一の列に結合するやあ、
単一の列に統合したい文字データを含む N 列があります。特定の行の場合、多くの列が空白になるか、同じ値を繰り返し含む場合があります (別の列のエントリと比較して)。
Cols --> Utilities --> Combine Columns の下に機能があることを知っています。これにより、すべてのフィールドが並んで区切られた新しい列が生成されます。一意性を維持しながらこのプロセスを実行する方法についてアドバイスが必要です(つまり、その行に同じ値を持つ他の列がない場合にのみ、その列の値を追加します)
理想的には、JSL でこれをスクリプト化する方法についてのガイダンスを得たいと思います。 ただし、JMP データ テーブル/関数を使用した巧妙な (さらに面倒な) アプローチも歓迎します。
ありがとう。
スクリプティングRe: 一意のエントリに基づいて N 列のエントリを単一の列に結合するありがとうBrady_Brady!!
私にも効きます!!Re: 一意のエントリに基づいて N 列のエントリを単一の列に結合するどうもありがとうございました!
使用する開始列と終了列を指定できるなど、このソリューションの柔軟性が気に入っています。順列の数を減らすために、アルファベット順に並べ替えを行ったことも本当に気に入っています。
返信が遅くなり申し訳ありません。 最初は、機能しないというまれな問題があると思っていましたが、再訪した後、問題は見られません。
Re: 一意のエントリに基づいて N 列のエントリを単一の列に結合する迅速な返信と解決策をありがとう、Txnelson!
これはうまくいきますが、私の列名はやや長く、リストを手動で指定する必要はありません。
単純な dt << Get Column Names を使用して列名を取得し、保存することができました。
また、スーパーユーザー「ms」がエントリをアルファベット順に並べて、順列の数を減らす方法も本当に気に入りました(私はそれを求めていませんでしたが)
返信が遅くなり申し訳ありません。
Re: 一意のエントリに基づいて N 列のエントリを単一の列に結合する私は以前の回答を好みますが、ポイント アンド クリックでこれを行うこともできます。これは、スクリプトを作成しない人にとって魅力的です (スクリプトを作成しない人がいるようです!!)。
連想配列のアプローチと同様に、結果の列の値は最小から最大に並べ替えられます。
1) 元の列を選択し、列の結合ユーティリティを使用して複数回答列を作成します。
2) 新しい列を選択し、テキストを列ユーティリティに適用します。必ず [インジケーターを作成] ボックスにチェックを入れてください。
3) 10 個の新しい指標列を選択した後、「列は指標列である」ボックスを必ずチェックして、結合列ユーティリティを適用します。
Re: 一意のエントリに基づいて N 列のエントリを単一の列に結合するこれは、ジムの式の代替です。 違いは、のユニークな値結合された文字列は、出現順ではなくアルファベット順にソートされます。
列の数は、ローカル パラメータを設定することで一般化できます。 N .
dt = Current Data Table();
dt << New Column("Combined",
Character,
Formula(
Local({dt = Current Data Table(), N = 4},
Concat Items(Associative Array(dt[Row(), 1 :: N]) << get keys, ",")
)
)
);
(データ テーブル マトリックス表記を使用するため、JMP 13 以降でのみ使用されます)
Re: 一意のエントリに基づいて N 列のエントリを単一の列に結合するこの問題を解決する方法の 1 つを次に示します。列のリストから一意の値を組み合わせる数式を作成しました。最後の列に数式が適用されたサンプルデータテーブルを添付しました

以下は、使用される式です
VarList = {"One", "Two", "Three", "Four"};
DataList = {};
CountList = {};
DataValue = "";
For( i = 1, i <= N Items( VarList ), i++,
Insert Into( DataList, As Column( VarList[i] ) );
Insert Into( CountList, 0 );
);
For( i = 1, i <= N Items( VarList ) - 1, i++,
For( k = i + 1, k <= N Items( VarList ), k++,
If( DataList[i] == DataList[k],
CountList[k] = CountList[k] + 1
)
)
);
For( i = 1, i <= N Items( VarList ), i++,
If( CountList[i] == 0 & DataList[i] != "",
DataValue = DataValue || "," || DataList[i]
)
);
DataValue = Substr( DataValue, 2 );