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