SAS データ セットのリレーショナル データベースから取得した結果がいくつかあります。すべての変数名は数字で始まるため、名前を変更したり、データ ステップでアクセスしたりすることはできません。RDBMS からデータを再度取得せずに名前を変更したり、アクセスしたりする方法はありますか?
2 に答える
options validvarname=any;
それらにアクセスでき、おそらくデータセットを使用することさえできます-「不正な」変数名を"variable name"n
(引用符の後に n を)で囲んname literal
で、変数名と同等の a を作成できます(Oracle で を使用するように"variable name"
)。
それらを使いやすくしたい場合は、次のようなことができます
proc sql;
select catx(' ','rename',name,'=',cats('_',name,';')) into :renamelist separated by ' '
from dictionary.columns
where libname='WORK' and memname='DATASETNAME'; *perhaps AND ANYDIGIT(substr(name,1,1)) as well;
quit;
proc datasets lib=work;
modify datasetname;
&renamelist;
quit;
また、RDBMS に接続する前に設定を試すこともできoptions validvarname=v7;
ます。そのように設定している場合 (現在は設定していない場合)、SAS が (状況に応じて) 代わりにこれを行う可能性があるためです。
Joe の回答には役立つ情報がいくつかありますが、実際には、SAS にはこれを処理するための (ある程度自動化された) メソッドがあることがわかりました。RDBMS からデータを照会すると、SAS は実際には、数字で始まる列名を最初の文字をアンダースコアに置き換えます。したがって、1994Q4 は _994Q4 になります。したがって、その方法でデータに簡単にアクセスできます。
ただし、SAS は RDBMS の元の名前を変数のタイトルとして保持するため、テーブル ビュー モードでは 1994Q4 (またはその他) として表示されます。