データ テーブル: メッセージ列は存在しますか (colname)? (:green_heart:)☐ クールな新機能
☑ 多くのユーザーに役立つ可能性があります!
☑ 「バグ」を除去する
☐ あれば便利
☐ 誰も必要としない
データ テーブルに列colname はありますか?
これはコミュニティで最も頻繁に尋ねられる質問の 1 つです。
https://community.jmp.com/t5/Discussions/Check-column-name-if-existing/mp/312011/highlight/true#M56...
https://community.jmp.com/t5/Discussions/How-to-check-if-list-of-columns-exist-and-report-those-that...
https://community.jmp.com/t5/Discussions/If-column-exists/td-p/348
https://community.jmp.com/t5/Discussions/how-to-creat-new-column-if-same-name-column-does-not-exist/...
https://community.jmp.com/t5/Discussions/Create-a-new-Row-column-only-if-it-does-not-exist/td-p/3091...
https://community.jmp.com/t5/Discussions/Determining-if-a-column-exists/mp/6268#M6267
https://community.jmp.com/t5/Discussions/Validate-column-name-exists-before-graphing/mp/5088#M5087
したがって、現時点では実装方法が十分に簡単ではないようです。
しかし、それはさらに興味深いものであり、多くの危険を伴います。
JSL命名規則に関連する障害を知らないユーザーは、おそらく次のように書くでしょう。
Contains( dt << Get Column Names(String), "age" )
彼のコードに組み込む。とても簡単だ…
しかし非常に危険です - 参照:
https://community.jmp.com/t5/Discussions/check-if-column-exists/mp/572468
一部の JSL スクリプト オタクによる奇妙な議論のように見えますが、上記の記述は確かに多くの場合に有効ですが、次のことが示されています。
列名にスペース、大文字、特殊文字が含まれていると失敗します。
ユーザーがこのような危険なコードを使用することを防ぐためには、「制度化」することが最善です。
つまり、すべての落とし穴を自動的に考慮した簡単なソリューションをユーザーに提供します。
私の願い:
データテーブルを問い合わせることが可能です:
dt << contains column("colname")
この関数はすべての落とし穴を考慮することができます:
- compare with exact match - or check match for as name("colname")<FONT face="arial,helvetica,sans-serif">スペースを考慮して</FONT>
- 小文字と大文字を区別するか区別しないか
- 特殊文字を扱う
メリット:
- コミュニティ内の質問が少ない
- 自動的により良いコードを生成します。
- フラストレーションが減ります。
より多くの願いが提出されました
自動化とスクリプトRe: データテーブル: メッセージ列は存在しますか(列名)?ありがとう :)
Re: データテーブル: メッセージ列は存在しますか(列名)? - ステータスが「はい、お待ちください!」に変更されました。Development is exploring a solution: "テーブルの上に直接質問できるメッセージを用意しておきます。dt << Has Column("age")、完全一致または名前 (スペースと大文字小文字を区別しない) 一致が必要な場合に、異なる回答を与えるオプションが含まれる可能性があります。」
「はい、お待ちください」に変更します。
Re: データテーブル << 列が存在します("名前")? - ステータスが「調査中」に変更されましたRe: データテーブル << 列が存在します("名前")?@hogi さんと@jthi さん、コメントありがとうございます。ステータスを調査中に変更します。
Re: データテーブル << 列が存在します("名前")? - ステータスが「確認済み」に変更されましたこんにちは@hogi 、ご提案ありがとうございます。お客様のご要望を承知し、検討させていただきます。
Re: データテーブル << 列が存在します("名前")?これらが同じ列名であるか異なる列名であるかを JMP に理解させる方がよいでしょうか?もちろん、これは問題を引き起こす可能性があるため、実装はそれほど簡単ではないかもしれません。
ここで少し混乱することがあります:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:age << set name("a g e");
dt:age[1] = 999;
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
dt << New Column("age", Numeric, Ordinal);
Show(Column Name(2) == Column Name(6)); // Column Name(2) == Column Name(6) = 1; // Columns don't need unique names?
Show(Column(dt, "age")); //Column(dt, "age") = Column("age");
dt:age[1] = 9999;
Show(dt:age[1]); //dt:age[1] = 9999;
wait(1);
dt << Delete Column("age");
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
列は特定の名前に従っていますか? Do follow 名はアルファベット文字またはアンダースコアで始まる必要がありますが、列では空白が重要になる場合があります。おそらく問題は (あるとすれば) 列参照がどのように機能するかということだけでしょうか。