for ステートメントで列名をループするにはどうすればよいですか?こんにちは。前の列をループする新しい数式列を作成しようとしています。前の列は 2 つのグループに分かれており、各グループには 2 つの文字列のいずれかで始まる列名が付いています。これらの列ヘッダーは 0、1、2、... から 22 までの整数で終わります。私のコードの添付の PDF スクリーンショットを参照して、それが機能しない理由を教えてください。昨日まで JMP を使用したことがなかったので、IF ステートメント内の列名で「i」または「%i」を間違って使用しているのではないかと思います。
前もって感謝します!
Re: for ステートメントで列名をループするにはどうすればよいですか?Liz_s、はい、これらは列番号を参照しています。
JMP メイン メニューから、[ヘルプ] > [書籍] > [スクリプト ガイド] を選択し、439 ページ (またはその近く) に進みます。 これは第9章のセクションですデータテーブル、セクション 1、データテーブルオブジェクトの操作、 トピックデータ値へのアクセス。 データ値にアクセスして割り当てる別の方法については、そのセクション全体をお読みください。
コメント: タスクの鍵は、各行のどの決定列に「Matriculated」が含まれているかを見つけることでした。 各行を 22 回以上ループすると、大量のネストが発生します。 ここで詳細を学ぶために重要なのは、[ヘルプ] > [スクリプト インデックス] > [関数] を使用して、Contains について学ぶことです。
Contains( list|string, match string) は、最初に見つかった位置を返します。 注: Loc() は、一致する値が見つかったリストまたは行列内のすべての位置を返します。 dt[row, c1::cn] (列 c1 から cn が文字) を理解すると、テーブル値のリストが返されます。Contains() は位置 (k) を検索するため、これが組織列の正しい位置になります。
重要なのは、自分の機能にアクセスして割り当て、機能を知る方法を「ツールを知る」ことです。
JMP の学習の旅がうまくいきますように。
Re: for ステートメントで列名をループするにはどうすればよいですか?こんにちは、
このスクリプトは完璧に機能しました。JMP 数式エディターに不慣れな私を助けてくれてありがとうございました。このエレガントなコードは、私がループを作成し始めたときに念頭に置いていたものです。最後に 1 つだけ質問ですが、インデックス ステートメント内での 6 と 10 という数字の選択について説明していただけますか。
インデックス番号 6 と 10 は、テスト ファイルに 2 つの列タイプがそれぞれ 5 つずつあり、合計 10 列あったためだと思います。つまり、6 で決定列のセットが開始され、10 で決定列が終了するということでしょうか?(推測を避けて、ただ質問することにしました。)
感謝の気持ち!
リズ_S
Re: for ステートメントで列名をループするにはどうすればよいですか?Matriculation データ テーブルで機能する式は次のとおりです。これは単なる JSL テキストです。
k = Contains( Current Data Table()[Row(), Index( 6, 10 )], "Matriculated" );
If( k > 0,
Column( "designation_organization_" || Char( k ) )[Row()],
"None"
);
Re: for ステートメントで列名をループするにはどうすればよいですか?最初に試したのは、青いボックスの数式をコピーして、新しい列スクリプト ウィンドウに貼り付けることでした。 貼り付けません。ソリューションの青いボックス内の情報が写真またはスクリーンショットであるかのようです。
はい、数式ボックスをダブルクリックしてスクリプトを入力する方法は知っています。 Contain ステートメントに行インデックスと列インデックスを追加する方法がまだわかりません。 しかし、あなたの回答の前半部分についてもう一度感謝します。Re: for ステートメントで列名をループするにはどうすればよいですか?複数のステートメントや数式を入れるのは面倒なので、直接入力した方がよい場合もあります。
数式内をダブルクリックすると、スクリプト ウィンドウが開きます。これには少し練習が必要かもしれません。 おそらく、列番号を使用する数式をコピーして青いボックスに貼り付け、ダブルクリックしてスクリプト エディターを起動します。
それが役立つことを願っています。
Re: for ステートメントで列名をループするにはどうすればよいですか?gzmorgan0 さん、こんにちは。
添付したテーブル用に最初に作成したスクリプトは、私が望んでいることを実現しており、素晴らしいです。今日は仕事でプロジェクトを終えることができます。ありがとう!ただし、これは私にとって JMP の 3 日目なので、JMP の数式エディターを使用して作成した最後のオプションの書き方を理解したいと思います。最初のスクリプトを実行した後、テーブルに新しい列を作成しようとしたときに、2 つの問題が発生しました。
1.) 列式エディターで 2 つの独立した関数を 2 つの別々のステートメントで使用できませんでした。 私はから始めました含まれています関数に「;」を追加しました。その後。しかし、私がクリックしたとき、もし関数を使用すると、Contains ステートメントが自動的に埋め込まれます。奇妙な。私はほしくない含まれています中に埋め込まれているもしまたはその逆。
2.) row() と Index(6,10) を追加する方法がわかりませんでした。含まれています( 現在のデータテーブル (),...^ オプションを使用すると、新しいカンマ区切りの「部分」が得られます。含まれています(現在のデータテーブル() 、一部、 「入学」)。行/列オプションをどのように挿入しましたか含まれています数式エディターの関数?
ウェルカム キットのチュートリアルを一通り読みましたが、スクリプト作成と数式エディターの使用に関する十分な情報が新しい列にありませんでした。初心者におすすめのYoutube動画をご存知ですか?ただし、お時間がありましたら再度ご返信いただければ幸いです。
どうもありがとう!
Re: for ステートメントで列名をループするにはどうすればよいですか?必要だと思われることを達成するには、複数の方法があります。 まず最初に、列を参照するための JMP 構文を理解する必要があります。たとえば、組織 1 ~ 5 をランダムに選択する新しい列を作成する場合、列の式は次のようになります。
i = Random Integer(1,5);
Column( "designation_organization_" || Char( i ) )[Row()];
||は連結演算子、Char(i) は文字列です。 次に、括弧は、指定された列の行を表します。
表を添付させていただきました。 テーブルがどのようなものであるかわかりませんが、おそらくこのスクリプトが役立つでしょう。
付属の表を開きます。次に、このスクリプトを実行します
dt=data table("matriculation");
cnmes = dt << get column names("string");
dcols = {}; //create a list of decision columns
for(i=1, i<=nitems(cnmes), i++,
if( contains(cnmes[i], "_decision_"), Insert into(dcols, cnmes[i]) )
);
//create a new column
matcol = dt << New Column("Major", Character);
//rowwise
for(i=1, i <= nrow(dt) , i++,
k = Contains(dt[i,dcols], "Matriculated"); <BR /> //dt[ i, dcols] is a list of values in the decision columns from row i<BR /> //contains returns the position in the list for "Matriculated"
matcol[i] = if(k>0, Column("designation_organization_" || char(k))[i], "None" );<BR /> //if k > 0, "Matriculated" was found, so assign to matcol the organization for the corresponding k
);JMP では列番号を使用できることに注意してください。 これは、列番号を使用する、アタッチされたテーブルの新しい列用のスクリプトです。

Re: for ステートメントで列名をループするにはどうすればよいですか?PDF が読みにくいです。22 列のうち「Matriculated」は 1 列だけでしょうか? それとも、いくつかの組織コードが必要になりますか?