2013-01-22 13 views
5

データステップのkeepでワイルドカードを使用できますか?私は(左から始まるBキープ変数xとyと、すべての変数にAの結合)次の操作を実行したい:データステップ内のワイルドカード

data C; 
    merge A(in=a) 
      B(keep= x y var* in=b); 
    by x y; 
    if a; 
run; 

答えて

8

はい、:を使用しています。

data C; 
    merge A(in=a) 
      B(keep=x y a: in=b); 
    by x y; 
    if a; 
run; 

(それはあなたがaという名前の変数を持っている場合in=aを言うことはお勧めできません。)

あなたは連続番号を持つ変数を持っている場合は、aN、...、a2a1のような、することができますa1-aNを書きます。隣接する列のセット(たとえば、varXvarY、およびvarZがデータセット内に物理的に隣接する場合)は、varX--varZと言うことができます。これらの2つの例の違いは、ダッシュを1つまたは2つ使用するかどうかだけです。

+0

こんにちはitzy、迅速な答えと説明のおかげで! – statquant

+0

ところで、列名の選択にregexpなどを使うことはできますか? – statquant

+0

直接ではありません。あなたは別のステップを経ることができます。たとえば、現在のセッションのすべての列名と表名を含む表であるdictionary.columnsがあります。クエリをSQLで実行したり、SAS対応のsashelp.vcolumnを使用してクエリを実行したり、SASデータストアを実行したりすることができます。次に、結果をマクロ変数に格納し、そのマクロ変数を実際のキープ・ステップで使用します。 – Joe