複数の基準に基づいて行を選択するにはどうすればよいですか?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
データテーブルをサブセット化するスクリプトを書いています。 スクリプト GUID のコーディング例に従って、基準に従って選択できます。
各行に対して(Selected(Rowstate())=(name=="KATIE"));
これを一般化して KATIE と ルイーズの両方を選択するにはどうすればよいでしょうか?
これは動作しません:
各行に対して(Selected(Rowstate())=(name=="KATIE","ルイーズ"));
では、これの構文は何でしょうか?
よろしく
ポール
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?ありがとう、
以前は、各基準を個別のテーブルにサブセット化し、すべてを結合していました。
あけましておめでとう !Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?これは、「name_list」というリスト内で見つかったすべての一致を見つけて、それらをサブセット化されたデータテーブルに出力することを達成しようとしていることですか?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
name_list = {"Clay", "Alice", "AMY"};
For( i = 1, i <= N Items( name_list ), i++,
i_name = Uppercase( name_list[i] );
dt << select where( :name == i_name, current selection( "extend" ) );
);
dtSub = dt << subset( selected rows( 1 ), selected columns( 0 ) );Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?こんにちは。
スクリプトをありがとう。
名前リストを動的に処理し、それでもサブセット化できる方法はあるのだろうか
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
name_list={"クレイ","アリス","エイミー", ...};
for(i=1,i<=nitems(name_list),i++,
i_name=名前リスト[i];
dt<
);
dt<<サブセット;
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?この構文はもう少し読みやすいかもしれません。OR には垂直バーを使用し、AND にはアンパサンドを使用できます。
dt =開ける( 「$sample_data\Big Class.jmp」 ) ;
dt <<場所を選択してください((含まれています( :名前、 "ネクタイ" ) |含まれています( :名前、 「オーバー」 ))
&含まれています( :セックス、 「ふ」 )) ;
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?もうすぐそこです。 And() は両方の引数を囲む必要があります。 And() が true になるには、両方の引数が true である必要があります。
これは機能するはずです:
各行について(選択済み(行の状態() ) =そして(または(含まれています( :名前、 "ネクタイ" ) 、含まれています( :名前、 「オーバー」 )) 、含まれています( :セックス、 「ふ」 ))) ;
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?こんにちは、これらの回答は本当に役に立ちました。 ここで、別の列の値の条件を追加したい場合は、name="KATIE" と "ROBERT" (またはさらに良いのは、"ATIE" を含む)、および sex="F" を選択したいとします。 次に、Or- 条件と and 条件を組み合わせる必要があります。
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
各行について(選択済み(行の状態() ) =または(含まれています( :名前、 "ネクタイ" ) 、含まれています( :名前、 「オーバー」 ))そして (contains(:sex, "F" ))) ;
私はすでにこのようなことをしましたが、うまくいきませんでした。
よろしく
ポール
(追記: もちろん私は Base SAS をよく使いました。 ここで、この方法でテーブルに選択を実装してみます。 助けてくれてありがとう。)
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?一致する文字列が多数ある場合は、長い OR() 句を作成する代わりにリストを使用したくなるでしょう。 ただし、Contain() は (文字列の) リスト内の部分文字列を検索することはできません。 この場合、リストに対するループが必要になります。 以下に例を示します。
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
名前リスト= { "ネクタイ" 、 「伊勢」 、 「クライ」 、 「WWW」 } ;
n = N 個のアイテム(名前リスト) ;
各行について(
のために(私= 1 、私<= n 、私++、
もし( ( s_flag =含まれています( :名前[] 、名前リスト[私】 )) > 0 、
壊す()
)
) ;
選択済み(行の状態() ) = s_flag ;
) ;
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?同じ原理:
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
各行について(選択済み(行の状態() ) =または(含まれています( :名前、 "ネクタイ" ) 、含まれています( :名前、 「伊勢」 )) ) ;
// あるいは、
dt <<場所を選択してください(または(含まれています( :名前、 "ネクタイ" ) 、含まれています( :名前、 「伊勢」 )) ) ;
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?しかし、さらに「Contains」を使用して文字列の一部のみを一致させたい場合はどうすればよいでしょうか? 「ATIE」や「ISE」みたいな? よろしくポール
Re: 複数の条件に基づいて行を選択するにはどうすればよいですか?Or() を使用します。
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
各行について(選択済み(行の状態() ) =または(名前== 「ケイティ」 、名前== 「ルイーズ」 ) ) ;
// あるいは、
dt <<場所を選択してください(または(名前== 「ケイティ」 、名前== 「ルイーズ」 ) ) ;