JSLのヒント:リスト内で固有の値を見つけるに参加することについての素晴らしいことの一つ JMPディスカバリーサミット開発者として、さまざまな用途の人々からの質問や提案を聞いています。 JMP 。JMP Scripting Language(JSL)に関する質問が3回出てきたので、共有する価値があります。問題は、「リストから重複した項目を削除する方法」です。
つまり、リストを考えると {「好き」、「嫌い」、「好き」、「中立」、「嫌い」、「好き」} 結果は {「嫌い」、「好き」、「中立」} (順序は重要ではありません)。
JSLでそれを実行するための合理的な方法はおそらくたくさんありますが(他のアイデアも大歓迎です)、私が考えることができる最も単純な方法は、連想配列 。連想配列は、キーが一意であるキーと値のペアの集まりです。同じキーを持つキーと値のペアを複数追加した場合、それらのうちの1つのみが保持されます(最後のペア)。値を気にしないのであれば、連想配列は事実上一意のキーの集合です。
JSLでは、連想配列をいくつかの方法で作成できますが、ここで重要なのはリストから作成することだけです。結果の連想配列はリストの値をキーとして扱い、一意のキーのみを格納します。それから連想配列にそのキーのリストを尋ねることができます。
答え = { 「好き」 、 "嫌い" 、 「好き」 、 "中性" 、 "嫌い" 、 「好き」 } ;
答えセット = 連想配列 ( 答え ) ;
独特の答え = 回答セット << キーを入手 ;
結果:{"嫌い"、"好き"、"中立"}
JMPで連想配列を発見したことがない場合は、JSL Scripting Indexのドキュメントと例を調べてください。
今、それはあなたの番です:あなたはリストからユニークな値を得ることができる他のどのような方法がありますか?Summarize()関数を使ったものが考えられます。
James Cultraは、次のように書いています。この方法は、行列に適しています...ジェームズ・カルトラ書きました:
連想配列関数は行列内の値を丸めるように見えるため、このメソッドは行列に適しています(したがって、一意のリストは行列内の実際の値と一致しません)。
Xan Greggは、次のように書いています。連想引数を反復処理すると... Xan Gregg 書きました:
連想配列を(FirstとNextのメッセージを使って)反復すると、エントリはソートされたキーの順に返されます。値が一意の場合はキーとして使用できますが、そうでない場合は明示的なソートが必要になると思います。あなたが試すかもしれません JMPコミュニティフォーラム後者のアイデアのために。
Eric Wittryは、次のように書いています。キー=>値のペアがあり、それが欲しいなら...エリックウィットリー書きました:
key => valueのペアがあり、値をソートしてその順序でキーを返したい場合(*ソートされた値に基づいて)、JMPでどのようにしますか。ありがとうエリック
Leighton Spadoneは書きました:レイトン・スパドン書きました:
// Listを一意の値にするために使用されるJSL Matrix関数。
//重複した値を含むリスト
回答= {"好き"、"嫌い"、"好き"、"中立"、"嫌い"、"好き"};
// 1回目は1、重複は0で、設計行列を1行にまとめます。
DesignMatrix = VMax(デザイン(回答、回答));
//結果:DesignMatrix = [1 1 0 1 0 0];
//サブセットユニークな値に対する回答のリスト。
UniqueAnswers =回答[Loc(DesignMatrix)];
//結果:UniqueAnsers = {"嫌い"、"好き"、"中立"};
Pmroz氏は次のように書いています。 Pmroz 書きました:
リストの中からユニークな値を見つけること
しばらく前のJMPディスカッションフォーラムに。Âこれが機能です
私が使っているのは、Xanが示したテクニックに基づいています。
/ *
関数名:get_unique_values
説明:リストから一意の値を探します。
連想配列を使用します
引数:
in_list - 固有の値を取得するためのリスト
* /
Get_unique_values =ファンクション ( { in_list } 、 { デフォルトのローカル } 、
tmp = [ => 0 ] ;
に挿入 ( tmp、in_list ) ;
tmp <<キーを取得します。
) ;
Guillaumeは書きました:もう一つの方法はループステートメントを使用することです...ギヨーム書きました:
もう1つの方法は、ループ文とLoc()関数を使用して一意の値を見つけることです。
回答= {"好き"、"嫌い"、"好き"、"中立"、"嫌い"、"好き"};
unique_answers = List();
(i = 1、i <= Nitems(回答)、i ++、
(Nrows(Loc(unique_answers、回答[i]))== 0の場合、
InsertInto(unique_answers、回答[i])
;
;
Michael Crottyは、次のように書いています。もう1つの組み込みのJSL関数です。マイケルクロッティ書きました:
この問題に役立つもう1つの組み込みJSL関数はDesign()関数です。
回答= {"好き"、"嫌い"、"好き"、"中立"、"嫌い"、"好き"};
デザイン(答え、<<レベル)[2]