条件文、アクション、および列の削除<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、みんな、
JSLスクリプトに問題があり、ドキュメント、書籍、ユーザーフォーラムで回答を調べました。
JSLで条件ステートメントを含むスクリプトを作成しましたが、「結果」の1つは、行の削除などのアクションを実行することです。これは条件付きステートメントで実行できますか?
このサンプルコードを使用してみましょう:
NE3 = 3;
NE4 = 5;
/*これらの変数は異なる値を取ることができます。 * /
(NE3 == NE4の場合、
NewNum = NE3、
NewNum =インデックス(NE3、NE4)
);
(NewNum == 0の場合、
印刷(「削除なし」)、
現在のデータテーブル()<<列の削除(NewNum)
);
ご覧のとおり、列を削除することはできません。さらに重要なことに、最初の条件ステートメントを使用したのは、範囲または単一の値を作成するためです。
ただし、JMPは存在しないもの(別名、列0)を削除できないため、値として0をどのように処理するかはわかりません。どんな提案でも大歓迎です!
どうもありがとう、
K
Re:条件文、アクション、列の削除Index()は列ベクトル、つまり二重括弧を提供します。 行列を転置してみてください。
DC_List1 =リストとして((転置((索引(( DC1 、 DC2 )))) ;
DC_List2 =リストとして((転置((索引(( DC3 、 DC4 )))) ;
Re:条件文、アクション、列の削除私は条件文と削除列をもっと使っています。私はそれをもう少し試してみましたが、単一の列名またはインデックス、あるいは列名またはインデックスのリストを使用して列を削除することの意味がわかります。ただし、指定されたコードを実行し、列の削除アクションを分離してインデックスのリストを作成した後でも、列のインデックスの全範囲を削除することはできません。例えば:
dtに13列あり、最初の3つ(1-3)と最後の2つ(12-13)を削除するとします。
DC1 = 1 ;
DC2 = 3 ;
DC3 = 12 ;
DC4 = 13 ;
DC_List1 =リストとして((索引(( DC1 、 DC2 )) ;
DC_List2 =リストとして((索引(( DC3 、 DC4 )) ;
DC_List3 = DC_List1 || DC_List2 ;
現在のデータテーブル() <<列を削除する(( dc_list3 )。 ; /*最初の変数の値である最初の列b/cのみを削除します。 * /
/ *作成されたリストの1つでも削除しても、失敗します。 * /
現在のデータテーブル() <<列を削除する(( dc_list1 )。 ; /*最初の変数の値である最初の列b/cのみを削除します。 * /
見せる(( dc_list1 )。 ; / * dc_list1 = {{1、2、3}}; * /
見せる(( dc_list3 )。 ; / * dc_list3 = {{1、2、3}、{12、13}}; * /
「AsList」関数が行列をリストに変換することは知っていますが、なぜそれが二重中括弧を与えるのか理解できません。私はそれがこのための私のコードを捨てているものだと思います。私は無駄に多くの組み合わせを試しました。何か考え/提案/助けはありますか?よろしくお願いします!
Re:条件文、アクション、列の削除批判は一切ありません!お願いしました。これは、私(およびJMPコミュニティ)がポインターを使って作業し、より詳細な作業を行うのに役立つと考えています。たくさんのことを学びました。時間を割いて私の質問に答え、それらの重要な細かい点を教えてくれたことに感謝します。
Re:条件文、アクション、列の削除条件付きステートメントで1つのステートメントまたは1000を実行できます。私のコードで示されているように、条件付きステートメントでアクション可能なステートメントを実行できます。
構文がいくつかの点で正しくありませんでした。
(NE3 == NE4の場合、
NewNum = NE3、
NewNum =インデックス(NE3、NE4)
);
このIFステートメントの結果は、newnumが数値または行列のいずれかになることです。これは問題ありませんが、newnumが2つの異なるタイプの値(数値と行列)に使用されているため、少し混乱する可能性があります。ただし、これにより、以下に示すように、次のIFステートメントで問題が発生します。
(NewNum == 0の場合、
印刷(「削除なし」)、
現在のデータテーブル()<<列の削除(NewNum)
);
これは本当に問題があるところです。NE3とNE4が0の場合、Newnumは0になります。前のIFステートメントから行列を取得した場合(NE3がNE4と等しくない場合)、NewNumを0と比較しても意味がありません。最後に、delete columnステートメントは、newnumが整数またはリストの場合にのみ機能します。したがって、ASLISTステートメントは不可欠です。
これがお役に立てば幸いです。これは建設的な批判を目的としています。
特にIFステートメントで最初にJSLを学ぶとき、私は多くの困難に直面しました。ステートメントのTHEN部分とELSE部分がどこにあるかを示すコメントを含むスタイルを開発しました。例えば:
もしも(( time_choice == 1 、
// それから
date_clause = "現時点の" ;
case_list = {{ 1 、 2 、 3 、 4 } ;
// そうしないと
、
date_clause = "累積的な" ;
case_list = {{ 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 } ;
)。 ;
Re:条件文、アクション、列の削除ご協力いただきありがとうございます!本当に感謝しています。条件付きステートメントの中心となる1つの質問:条件付きステートメントでアクション可能(別名、列、行、dtの削除および/または追加)を実行できますか?コードが指定された列を削除しなかった理由がわかりません。サンプルステートメントからaslist関数が欠落しているという理由だけでしたか? それとも私の構文はオフでしたか?私はまだJSLの条件のすべての詳細を学んでいます、そしてあなたがそれらのいくつかを表現を「接着」するためにセミコロンを使用したのを見ます。再度、感謝します!
Re:条件文、アクション、列の削除これは少し注意が必要です。列を削除する単一の列名またはインデックス、またはリスト列名またはインデックスの。このプログラムはトリックを行います。に注意してくださいリストとして行列をリストに変換する関数:
NE3 = 3 ;
NE4 = 5 ;
/*これらの変数は異なる値を取ることができます。 * /
dt =現在のデータテーブル() ;
nc = ncols (( dt )。 ;
もしも(( ne3 >> 0 & ne3 <= nc & ne4 >> 0 & ne4 <= nc 、
もしも(( NE3 == NE4 、
dt <<列を削除(( ne3 )。 ;
、
new_list =リストとして((索引(( NE3 、 NE4 )) ;
dt <<列を削除(( new_list )。 ;
)。 ;
)。 ;