リストの変数をデータ テーブルの行に割り当てるにはどうすればよいですか?行数が可変のデータテーブルを使用しています。 「理由 1」という新しい列に定義するカテゴリ別の説明を割り当てたいと考えています。 この「理由 1」列は、「名前」列が、定義したリストのいずれかの文字列と一致する場合に割り当てられます。
「名前」行のエントリは、::slitter、::label、または ::case リストのエントリと正確に一致します。
すべての行に異なる理由 1 コードを割り当て、各理由 1 に従ってデータを分析したいと考えています。
dt1 << New Column("Reason 1", Character, "Nominal");
Nrows = N Rows(dt1);
For( i =1, i<=Nrows, i++
For( j=1, j<= N items( ::slitter ), j++,
If(:Name(i) == Eval(slitter(j)), :Reason 1(i) = "Slitter");
);
);
// %Slitter% description codes
slitter = {"TM2300-370",
"TM2300-380",
"TM2300-385",
"TM2300-390",
"TM2300-395",
"TM2300-400"};<BR /><BR />// %Label% description codes (8)<BR />::label = {"TM2300-020",<BR />"TM2300-025",<BR />"TM2300-070",<BR />"TM2300-075",<BR />"TM2300-080",<BR />"TM2300-085",<BR />"TM2300-090",<BR />"TM2300-095"};<BR /><BR />//%Case% description codes (7)<BR />::case = {"TM2300-030",<BR />"TM2300-035",<BR />"TM2300-040",<BR />"TM2300-045",<BR />"TM2300-050",<BR />"TM2300-055",<BR />"TM2300-060"};データ表スクリプティングウィンドウズRe: リストの変数をデータ テーブルの行に割り当てるにはどうすればよいですか?なんらかの理由で、ループは、割り当てたい5つのリストのうちの1つの特定のリストに変数を割り当てていませんでした。 「Get rows where」機能は、私が望んでいたことを達成しました。
このソリューションに時間を割いていただきありがとうございます。
- ローガン
Re: リストの変数をデータ テーブルの行に割り当てるにはどうすればよいですか?私の心は最初、やりたいことを完了するためにループに行きましたが、この代替ソリューションに感謝します!
これにより、データが希望どおりに分類されました。
Re: リストの変数をデータ テーブルの行に割り当てるにはどうすればよいですか?get rows where と contains を使用する別の方法があります。ループは必要ありません。
dt = data table("Sample Data Set-1");
// %Slitter% description codes
slitter = {"TM2300-370", "TM2300-380", "TM2300-385", "TM2300-390", "TM2300-395", "TM2300-400"};
match_rows = dt << get rows where(contains(slitter, :Name));
dt:Reason 1[match_rows] = "Slitter";Re: リストの変数をデータ テーブルの行に割り当てるにはどうすればよいですか?いくつかの構文エラーと、Contains() 関数を使用して置換できる一致をチェックする非効率的な For ループがあります。同じ計算を行う新しい数式列を作成するメソッドも追加しました。
Names Default To Here( 1 );
dt1=current data table();
dt1 << New Column( "Reason 1", Character, "Nominal" );
// %Slitter% description codes
slitter = {"TM2300-370", "TM2300-380", "TM2300-385", "TM2300-390", "TM2300-395", "TM2300-400"};
Nrows = N Rows( dt1 );
For( i = 1, i <= Nrows, i++,
If( Contains( slitter, :Name[i] ) == 1,
:Reason 1[i] = "Slitter"
)
);
// or
dt1 << New Column( "Reason 2",
character,
formula(
If( Row() == 1,
slitter = {"TM2300-370", "TM2300-380", "TM2300-385", "TM2300-390", "TM2300-395", "TM2300-400"}
);
If( Contains( slitter, :Name ) == 1,
:Reason 2 = "Slitter"
);
)
);