既存の列に新しい列ベースのカテゴリを作成して入力しますこんにちは、
情報のサブセットのみを含む一連の列を作成するためにカテゴリ列 (test_article) を使用する簡単なクエリを作成しようとしています。 スクリプトが意図したとおりに機能する場合、テーブルには 2 つの新しい列が作成されます (PBS と ...)。
| テスト記事 | 測定 | PBS 対 709547 | PBS 対 709139 |
| PBS | 1.23 | PBS | PBS |
| PBS | 1.456 | PBS | PBS |
| 709547 | 4.56 | 709547 | 除外する |
709139 | 5.02 | 除外する | 709139 |
| 709139 | 6.02 | 除外する | 709139 |
| 709547 | 4.57 | 709547 | 除外する |
次のスクリプトを試しました。
NamesDefaultToHere(1);
dt=current data table();
row = Associative Array( :test_article ) << Get Keys;
nc=N items (row);
For( i = 1, i <= nc, i++,
new column("PBS vs "|| row[i],"Character", "Nominal", Formula(If( :test_article == "PBS", :test_article,
If( :test_article == row[i],
"test",
"EXCLUDE"
)
))));どういうわけか、「PBS」を除いて、新しい列に値が入力されません。
助言がありますか?
どうもありがとう
セバスチャン
Re: 既存の列に新しい列ベースのカテゴリを作成して入力しますまた、魅力のように機能します。
どうもありがとうRe: 既存の列に新しい列ベースのカテゴリを作成して入力します魔法のように動作します!
ありがとうRe: 既存の列に新しい列ベースのカテゴリを作成して入力しますrow[i] の値を式に入れる必要があります。 JMP は、New Column() メッセージの Formula() 部分内の式を評価しません。
使用できます代わりの()行[i]の実際の値を式に取得します。
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Substitute(
Expr(
New Column( "PBS vs " || row[i],
"Character",
"Nominal",
Formula( If( :test_article == "PBS" | :test_article == ri, :test_article, "EXCLUDE" ) )
)
),
Expr( ri ), Eval( row[i] )
)
)
);
Re: 既存の列に新しい列ベースのカテゴリを作成して入力しますあなたが抱えている主な問題は、式の定義内で、評価する必要がある項目を持つことができないということです。JMPは、式定義内のすべてが、式が実行されたときにのみ評価されると考えています。
したがって、新しい列の定義に渡される数式は、その構文で完全である必要があります。以下のコードの変更は、サンプル データ テーブルで機能します。
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Parse(
"New Column( \!"PBS vs " || row[i] ||
"\!",
Character,
Nominal,
Formula(
if (Row() == 1, theTest = \!""
|| row[i] ||
"\!");
If( :test_article == \!"PBS\!",
zip=:test_article,
If( :test_article == theTest,
zip=\!"test\!",
zip=\!"EXCLUDE\!"
)
);
zip
)
)
);"
)
)
);
