元の列セルに基づいて新しい列を作成して数式を挿入するこんにちは、
私は経験の浅いJMPスクリプト作成者であり、私は最初の大きなスクリプトを書き込もうとしています。 一部問題があります。これが私がやろうとしていることです:私は私がこのスクリプトを使用することになる様々なデータテーブルを持っています。最初の列を除くすべての列を調べ(列と行の番号はデータテーブルごとに異なります)、テーブルに既に存在する各列に新しい列を作成します。新しい列のそれぞれの名前を元の列の名前と同じで、末尾に "_ code"を付けて、テーブルの元の列の隣に配置することをお勧めします。それぞれの新しいコラムの中で、式をif / thenステートメントにしたいと思います。「列A」のセル内にテキスト「<」がある場合は0、それ以外の場合は1。
私の説明が理にかなっていることを願っています。 私は自分のスクリプトを投稿しましたが、8行目で中断しているようですが、理由はわかりません。
助けてくれてありがとう!
レイシー
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 2, i <= nitems( col_list ), i++,
data_col = ":" || col_list[i];
code_col = col_list[i] || "_Code";
str = evalinsert (
"\[dt << New Colum ("^code_col^", Numeric, Continuous,
Format("Best",12),
Formula(If( Contains( "^code_col^", "<" ),
0,
1
)));
);]\");
eval(parse(str));
);再:新しい列を作成し、元の列のセルに基づいて数式を挿入するはい、私はそれを機能させることができました。どうもありがとうございます!
再:新しい列を作成し、元の列のセルに基づいて数式を挿入する:Name()関数はこの問題を処理するように設計されています。 以下は、問題を解決すると私が信じているあなたのスクリプトに加えた修正です。 私はこの修正をテストしていませんが、うまくいくと思います。 そうでなければ、あなたは私がやろうとしていることを見ることができるはずです、そしてあなたはそれを機能させることができるはずです。
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code" ,
Expr( __OrigCol__ ), Parse( ":Name(\!"" || col_list[i] || "\!:)" )
)
)
);再:新しい列を作成し、元の列のセルに基づいて数式を挿入するこんにちはジム、
スクリプトを新しいデータテーブルで試してみたところ、列名に問題が発生しました。 私は環境データを扱いますが、分析物の名前(つまりカラム名)には、" - "、"["、"]"、"("、")"、および/または "などの記号が含まれます。、" 私がスクリプトを実行したとき、それは "3-Methyl-1-butene"である最初のコラムに誤りがありました。 これに対する修正はありますか?
ありがとうございました、
レイシー
再:新しい列を作成し、元の列のセルに基づいて数式を挿入するそれはうまくいった!ありがとうございます。
私がデータテーブルにその "コラム13"を残したのは私の間違いでした。それは私のif thenステートメントが機能していることを確認しているだけで、オンラインで投稿したときに削除するのを忘れていました。だから私はちょうど私のデータテーブルからそれを削除し、あなたが送った素晴らしいスクリプトで13を2に変更し、そしてそれは魅力のように働いた。
どうもありがとうございます!
レイシー
再:新しい列を作成し、元の列のセルに基づいて数式を挿入するこれはあなたのすべてのニーズを満たすと私が信じているあなたのコードの修正です。 私が対処しなければならなかった1つの項目は、あなたが(2-13)で始める列は文字でなければならないということです、それで式はエラーになりません。 Column 13はスクリプトをエラーにしています。なぜならそれはcharacterに変更することができない式列だからです。なぜなら、それがその式を実行するとすぐにそれはその列を強制的に数値にするからです。
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code",
Expr( __OrigCol__ ), Parse( ":" || col_list[i] )
)
)
);