私の変数の列ヘッダーの名前を変更して、キーリストにあるものと一致するようにする必要があります。私は自分の持っているものと必要なものを説明するために、以下の写真を添付しました。sasのキーデータベースの後、または最初の行の値の後に列ヘッダーの名前を変更します。
私はnecesarily実際のコード、それを実現する方法の単なるアイデアを必要としません。 :) あまりにも多くの方々、ありがとうございます、そして、変更については申し訳ありません、前に質問を投稿したことはありません。
私の変数の列ヘッダーの名前を変更して、キーリストにあるものと一致するようにする必要があります。私は自分の持っているものと必要なものを説明するために、以下の写真を添付しました。sasのキーデータベースの後、または最初の行の値の後に列ヘッダーの名前を変更します。
私はnecesarily実際のコード、それを実現する方法の単なるアイデアを必要としません。 :) あまりにも多くの方々、ありがとうございます、そして、変更については申し訳ありません、前に質問を投稿したことはありません。
あなたは
NEW1 NEW2 NEW3
OLDX OLDY OLDZ
のようなテーブルを持っているそして、あなたは
rename oldx=new1 oldy=new2 oldz=new3 ;
のようなRENAME文を生成するためにそれを使用したい場合次に簡単な方法はPROC TRANSPOSEを使ってそれをseに変換することです名前ペアごとに行をパラメートします。そして、あなたがPROCのSQLを使用するか、あなたに
[_NAME_ COL1
NEW1 OLDX
NEW2 OLDY
NEW3 OLDZ
のようなテーブルを取得します
proc transpose data=have out=names ;
var _all_;
run;
マクロ変数をペアですばやく生成します。
proc sql noprint;
select catx('=',col1,_name_) into :rename separated by ' '
from names;
quit;
data new ;
set old;
rename &rename ;
run;
名のリストは単なるテキストファイルにリネーム文を生成し、あなたがしたい場所にそれを実行するためにINCLUDE%を使用してデータステップを使用して、単一のマクロ変数に入れて長すぎる場合。あなたはおそらく、データセットから直接、最後のステップを行うとのproc転置をスキップすることができ
filename code temp;
data _null_;
set names end=eof;
file code ;
if _n_=1 then put 'rename' ;
put col1 '=' _name_ ;
if eof then put ';';
run;
data new ;
set old;
%include code ;
run;
EDIT
。
filename code temp;
data _null_;
set have ;
array _X _character_ ;
file code ;
put 'rename ' @ ;
do i=1 to dim(_X);
oldname = _x(i);
newname = vname(_x(i));
put oldname '=' newname @;
end;
put/';' ;
stop;
run;
結果のヘッダー行に表示される内容を変更するために、列別名を使用できます。
SELECT 'NewA' AS 'A',
'OtherB' AS 'B',
'diffC' AS 'C'
UNION
SELECT A,
B,
C
FROM <<Table>>
はあなたのクエリを投稿することができます:あなたは結果に行として「ネバOtherB diffC」をしたい場合は
、あなたはこれを行うだろうか? –
どういう意味ですか? – Catnipper
画像リンクを使用するのではなく、質問にテキストを投稿してください。写真を投稿すると、人々があなたのデータと答えを入力することを期待しています。 – Reeza