スマートカラム処理<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />みんな、
どのようにしてカラムをスマートに扱うのですか?
スクリプトとテーブルがあるとしましょう。
スクリプトはその中にいくつかの列を作成します。
私はスクリプトで作業している間、私はテーブルでそれを何度も実行します。スクリプトが列を作成すると、同じ名前で異なる番号の列を多数作成することになります。スクリプトの後半で作成した列を名前で参照すると、古い列が参照されます( "New Column"のようになりますが、"New Column 23"は参照しません)。
それに対処する方法は、実際に作成する前にその名前の列を削除することです。最初に新しいテーブルでそのスクリプトを使用すると問題が発生します。削除する列がない場合。
とにかく、スマートコラムの追加をどのようにして実現するのでしょうか。
いくつか好きです:
この名前で新しい列を作成したいです。この名前、またはこの名前と番号である名前の列(非公開列)はありますか。もしそうなら、それらを削除し、私の列を作成します。そのような列がない場合は、この名前で新しい列を作成してください。
再:スマートカラム処理ああ、それは簡単でした:
dt = 開いた ( "$ sample_data \ Big Class.jmp" ) ;
new_column = 「BMI」 ;
new_formula = "7 *:重さ/:身長/:身長" ;
SmartColumn = 関数 ({ new_column 、 new_formula } 、
// ----- SmartColumnを起動します
expr_missing = 評価挿入 ( "col = dt <<新しい列(new_column、Formula(^ new_formula ^));" ) ;
expr_exists = 評価挿入 ( "col = Column(new_column)<<式の設定(^ new_formula ^)<< EvalFormula;" ) ;
もし ( 不足している ( スクリプト可能 ( やってみる ( カラム ( new_column ) ) ) ) 、
評価する ( 解析する ( expr_missing )) ;
、評価する ( 解析する ( expr_exists )) ;
) ;
// - SmartColumnを終了
) ;
SmartColumn ( new_column 、 new_formula ) ;
再:スマートカラム処理わかりました、私はそれを釘付けしたと思います。
関数として書かれているなら、それは単にadd columnのスマートな置き換えになるでしょう。
列名、目的の式を取得し、その名前の列が存在する場合は式を更新して評価し、存在しない場合は式を作成して設定します。その列が他の式の他の場所で参照されている場合は問題ありません。
誰かがすぐに使える式としてそれを書くという構文で私を手伝ってくれる?
後で他の列プロパティを関数の引数として追加します。
dt = 開いた ( "$ sample_data \ Big Class.jmp" ) ;
new_column = 「BMI」 ;
new_formula = "700 *:重さ/:身長/:身長" ;
// ----- SmartColumnを起動します
expr_missing = 評価挿入 ( "col = dt <<新しい列(new_column、Formula(^ new_formula ^));" ) ;
expr_exists = 評価挿入 ( "col = Column(new_column)<<式の設定(^ new_formula ^)<< EvalFormula;" ) ;
もし ( 不足している ( スクリプト可能 ( やってみる ( カラム ( new_column ) ) ) ) 、
評価する ( 解析する ( expr_missing )) ; 、
評価する ( 解析する ( expr_exists )) ;
) ;
// - SmartColumnを終了
再:スマートカラム処理私があなたに送ったコードに欠けている "、"の間違いです。 ごめんなさい。
私の意図は、コードを使用して、特定の列が存在するかどうかを検出する方法を提供することです。
削除する列を使用する式を含む列を作成した場合、その依存関係を解消する最も簡単な方法は、削除する列を指す式を持つ列の値を実際の列に変更することです。式ベースの値ではなく、値。 これを行うには、列から式を削除するだけでよく、JMPは値を実際のデータに変換します。 これが完了したら、元の列を削除できます。
ここにデフォルトの名前 ( 1 ;
dt = 開いた ( "$ SAMPLE_DATA \ big class.jmp" ;
//数式で新しい列を作成します
dt << 新しいコラム ( "比率" 、式(:身長/体重));
//数式プロパティと列のデータを削除します
//美徳ではなく実数値に変換される
dt:比率<< プロパティを削除 ( "式" ;
再:スマートカラム処理実際には、取り戻します。が他の列の式で参照されている場合は、列を削除することはできません。
その他の方法で?
他の列がその式の中にあるように、データを再配線するか、列の式を変更することさえ可能ですか?
再:スマートカラム処理2番目の "dt"の前に "、"を入れるとうまくいきます。
そして、あなたは "Throw()"と "Try()"を一緒に使わないのですか?
再:スマートカラム処理これが私が使っているものです:
(Try(column(dt、"<列名>")<<名前を取得、"")!= "" dt <<列を削除( "<列名>"));