サブセット作成の詳細こんにちは。今年 5 月の投稿https://communities.sas.com/message/166376#166376を参照しています。
この例では、1) 最初に af データ フィルターを追加し、2) 次にサブセット化することによって、新しいデータ テーブルを作成する方法を説明します。
dt = オープン (BigClass);
dt << データ フィルター (add filter(columns(:age),where(:age=={12,13}), Mode (select(1)));
サブ1 = dt<
その結果、「regions」という名前のデータ テーブルが作成されます。予想通り。
私は独自のデータセットを使用して同様の例を作成しましたが (BigClass の例は機能します!!)、私にとってはうまく機能しません。何か誤解をしているのではないかと思います。私のプログラムフローを添付します。
BigClass の例と私の例の違いは、スクリプト全体を実行するときにデータ フィルターが選択されないことです。 (特定の名前が含まれる元のコードを送信できるようにするために、Excel ファイルからのファイルのロードを省略しました)。説明すると、文字列があり、その列のテキストが「d」または「I」で始まる行のみを選択したいと考えています。データ フィルターを実行する新しい列を作成する必要があることがわかりました。コードを合計で実行すると、行は選択されず、サブセット化されたデータ テーブルは作成されません。最初に新しい列 Onelettet が作成されるまでコードを実行し、その後データ フィルターを実行すると、フィルターが作成され、行が選択されます。そして最後にサブセットデータテーブルが作成されます。しかし、これらのことは、スクリプトがどのように実行されたとしても起こるはずです。または?
これはスクリプトの使用の基本であるため、これらの微妙な点を深く理解する必要があります。
よろしく
ポール
Re: サブセット作成の詳細MS のコード例を使用した、データ テーブル内の行を選択状態に切り替える必要がないため、非常に堅牢な直接的な解決策を次に示します。
dt = 新しいテーブル( "テスト" ,
行を追加( 5 ) 、
新しい列( "Instr" 、 Character 、
値の設定( { "ドラム" , 「トランペット」 、 「竪琴」 、 「クラリネット」 、 「ディジュリドゥ」 } )
)
);
sel = dt << get rows where ( Starts With ( : instr , "d" ) | Starts With ( : instr , "l" ) ) ;
dt << subset (出力テーブル名( "sel instr" ) 、行( sel ) 、選択された列( 0 ) ) ;
Re: サブセット作成の詳細データ フィルターに参照を指定していれば、データ フィルターを閉じるのは簡単です。
df = dt << データフィルター( ... ) ;
df << 近い;
Re: サブセット作成の詳細こんにちは、MSさん
wait() を追加します。式の評価によってフィルターが設定されない問題が解決された後、サブセット コマンドが実行されます。ありがとう。
フィルターウィンドウを閉じるコマンドは何ですか?サブセットの後も画面上に表示されたくないのです。データセットが欲しいだけです。実際には見る必要はまったくありません。
はい、選択は 1 つのステートメントで完了できると思いました。ただやり方がわからなかっただけです。
ありがとう
ポール
Re: サブセット作成の詳細コードをテストするためのテーブルがなければ、特定のケースでなぜ機能しないのかを判断するのは困難です。コードが同じスクリプトで作成された列の式に依存している場合、式の評価がスクリプトの実行よりも遅れ、予期しない結果が生じる可能性があることを経験しました。これを回避するには、重要なステップでWait()または<< eval 式を挿入してみてください。
ただし、この特定のケースでは、私が正しく理解していれば、新しい列 (またはデータ フィルター) は必要ありません。おそらく以下の例が役立つでしょう。
//テーブルの例
dt = 新しいテーブル( "テスト" ,
行を追加( 5 ) 、
新しい列( "Instr" 、 Character 、
値の設定( { "ドラム" , 「トランペット」 、 「竪琴」 、 「クラリネット」 、 「ディジュリドゥ」 } )
)
);
// データフィルターを使用して d または l で始まる instr を選択します
sel = dt << get rows where ( Starts With ( : instr , "d" ) | Starts With ( : instr , "l" ) ) ;
dt << データフィルター(
add filter ( columns ( : instr ) , where ( : instr = : instr [ sel ] ) , mode ( select ( 1 ) ) )
);
dt << subset (出力テーブル名( "sel instr" ) ,選択された行( 1 ) ,選択された列( 0 ) ) ;
// または、データ フィルターを使用しない、より直接的なアプローチ
dt << select where (で始まる( : instr , "d" ) |で始まる( : instr , "l" ) ) ;
dt << subset (出力テーブル名( "sel instr" ) ,選択された行( 1 ) ,選択された列( 0 ) ) ;