2017-10-26 11 views
0

Excelファイルの名前は常に同じですが、テーブルの内容は変わります。私は、セルの1つの値に基づいてテーブルに名前を付けるコードを記述しようとしています。例えばSAS:セル値に基づいてテーブル名を指定する

セルA3には「採用情報」に等しい場合、私は、テーブルには、「ジョブ」と命名することにしたいです。 セルA3が "インフレ情報"と等しい場合は、表の名前を "通貨"にします。

など

私は1つのマクロ(すなわち%table(filename,cell))、またはその後、else文がこれを達成する場合の一つのループを定義したいです。残念なことに、私はこの論理的に私の頭を包み込むように見えることはできません。 SASの経験を持つ人が私を助けてくれるなら、それはすばらしいことになるでしょう。私はすぐに私の質問を編集して、私がすでに試したが、仕事を終えられなかったコードをいくつか含めることにする。

+0

を<「表に名前を付ける」 - これは、具体的に何を意味するのでしょうか? – Joe

+0

申し訳ありませんが、私はより具体的ではありませんでした。おそらく、私はそれをテーブル作成と呼ぶべきだったでしょう。テーブルまたはデータシートが作成されるとき、それは名前を持っています。 e。テーブル______ as ...またはデータ______ set ....を作成します。 これは今や理にかなっていますか? – Econ2016

+0

A3はExcelのリファレンスです。あなたが作成した実際のSASデータセットを読むときに、その価値をどのように見つけ出しますか?どの変数名が列Aを表していますか?どんな観測を使うのか、どのように分かりますか? – Tom

答えて

2

コンテンツを検索するには、データを読み取る必要があります。 PROC DATASETSを使用してデータセットの名前を簡単に変更できるように、マクロ変数を作成することができます。

ExcelシートをWORK.HAVEという名前のデータセットに変換したとします。列Aのデータがどの変数に含まれているかを知っているとしましょう。変数Aを呼び出してみましょう。どの観測データを使用するかを知ることができるデータがありますか?ここでは、シートの最初の行に変数名を付ける必要があるため、A3で2番目の観測を意味すると仮定しましょう。

ので、その場合には、あなたがこのような何かしたい:

%let newname=have; 
data _null_; 
    set have (firstobs=2); 
    if A="Employment Information" then call symputx('newname','Jobs'); 
    else if A="Inflation Information" then call symputx('newname','Currency'); 
    stop; 
run; 
proc datasets nolist lib=work; 
    change have=&newname; 
    run; 
quit; 
+0

ありがとう。私はあなたがフレームワークとして提供したものを使用し、それを動作させることができました。私は助けに感謝します! – Econ2016

関連する問題