2017-02-17 10 views
2

ファイル名を作成し、私は次のように名前のSASの月末データセットの数を持っている:SASは、コロンを使用して文を設定し、だから、SASを使用して、変数

mydata_201501 
mydata_201602 
mydata_201603 
mydata_201604 
mydata_201605 
... 
mydata_201612 

、それぞれ特定の月末にアカウント情報を持っています。

data mynewdata; 
set mydata_:; 
run; 

は、しかし、私はそれらを積み重ねるときに、私は月末情報を失うことになるデータセット内には日付スタンプ変数が存在しない:私は、コロンを使用してではなく、次のようにフルセットの文を書き出すすべて1つのデータセットにデータセットをスタックしたいですアカウントごとにどのアカウントがどのアカウントに対応しているのかを知りたい行が来るテーブルに名前を付ける変数を自動的に作成する方法はありますか?例えば、長いったらしい方法は、このようになります:

data mynewdata; 
set mydata_201501 (in=a) mydata_201502 (in=b) mydata_201503 (in=c)...; 
if a then tablename = 'mydata_201501'; 
if b then tablename = 'mydata_201502'; 
if c... 
run; 

が、これらの線に沿って、コロンを使用して迅速な方法はありますか?私はいつも迷惑コメントのリンクをクリックして見つける

data mynewdata; 
set mydata_:; 
tablename = _tablelabel_; 
run; 

おかげ

+0

これはあなたが探しているものであると思われる。http://support.sas.com/documentation/cdl/ en/lrdict/64316/HTML/default/viewer.htm#a000173782.htm#a003181060 – mjsqu

答えて

2

は、うまくいけば、ここであなたのコンテキスト内での答えです。変数にデータセット名を割り当てることINDSNAME= SETステートメントオプションを使用します。

data mynewdata; 
    set mydata_: indsname=_tablelabel_; 
    tablename = _tablelabel_; 
run; 

N.B. _tablelabel_を呼び出すことができます。が表示されないように、がSAS生成変数名のように変更することができます。

INDSNAME=はばかりのデータセットがmydata_yyyymmの名前と私は日付スタンプと月末変数を望んでいた私の特定のコードと、明確にするために、私はこれを生成することができたバージョン9.2

+0

これは完璧な解決策です。どうもありがとう。 – Tammboy

1

におけるSAS SETステートメントオプションになりました次のようにmjsquが提供するソリューションを使用して(OBSおよび必要に応じて提供する声明を保つ):

data mynewdata; 
    set mydata_: (obs=100 keep=xxx xxx) indsname=_tablelabel_; 
    format monthend yymmdd10.; 
    monthend = input(scan(_tablelabel_,-1,'_'),yymmn6.); 
run; 
関連する問題