1

SAS データ セットのリレーショナル データベースから取得した結果がいくつかあります。すべての変数名は数字で始まるため、名前を変更したり、データ ステップでアクセスしたりすることはできません。RDBMS からデータを再度取得せずに名前を変更したり、アクセスしたりする方法はありますか?

4

2 に答える 2

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 が (状況に応じて) 代わりにこれを行う可能性があるためです。

于 2013-10-21T16:46:18.747 に答える
0

Joe の回答には役立つ情報がいくつかありますが、実際には、SAS にはこれを処理するための (ある程度自動化された) メソッドがあることがわかりました。RDBMS からデータを照会すると、SAS は実際には、数字で始まる列名を最初の文字をアンダースコアに置き換えます。したがって、1994Q4 は _994Q4 になります。したがって、その方法でデータに簡単にアクセスできます。

ただし、SAS は RDBMS の元の名前を変数のタイトルとして保持するため、テーブル ビュー モードでは 1994Q4 (またはその他) として表示されます。

于 2013-10-23T12:31:53.373 に答える