0

変数の名前とその値を取得し、sas を使用して別のデータセットの列に配置します

data 1
var1 var2 var3
1 2 3
2 3 1


data 2
no var4
1 var1= 1, var2= 2, var3=3
2 var1=2, var2= 3, var3= 1

データ 1 をデータ 2 に転送したい

4

4 に答える 4

1

変数名をハードコーディングしたくないと仮定すると、以下のコードが機能するはずです。

data have;
input var1 var2 var3;
cards;
1 2 3
2 3 1
;
run;

data want;
set have;
length var4 $50;
array vars{*} var1--var3;
do i=1 to dim(vars);
if i=1 then var4=cats(vname(vars{i}),"=",vars{i});
else call cats(var4,",",vname(vars{i}),"=",vars{i});
end;
drop i;
run;
于 2013-03-07T13:50:44.447 に答える
1

変数名を「知りたくない」場合は、ファイルマジックを使用できます。

filename FT49F001 dummy; 
data new;
   set sashelp.class;
   file FT49f001;
   put (_all_)(+(-1) ', ' =) @;
   length newvar $512; 
   newvar = substr(_file_,3);
   put; 
   run; 
proc print; 
   run;
于 2013-03-21T18:53:19.630 に答える
0

このようなものをお探しですか?

DATA data1;
INPUT var1 var2 var3;
CARDS;
1 2 3 
2 3 1 
;
RUN; 

data data2;
set data1;
no=_N_;
var11= catx("= ","var1",var1);
var21= catx("= ","var2",var2);
var31= catx("= ","var3",var3);
var4= catx(", ",var11,var21,var31);
drop var1 var2 var3 var11 var21 var31 ;
run;
于 2013-03-07T08:52:47.010 に答える
0

IF を避けた、Keith のコードの少し単純なバージョン:

data have;
input var1 var2 var3;
cards;
1 2 3
2 3 1
;
run;

data want;
set have;
array vars var1-var3;
array varns $ varn1-varn3;
do i = 1 to dim(vars);
  varns[i] = cats(vname(vars[i]),'=',vars[i]);
end;
var4 = catx(',', of varns[*]);
keep var4;
run;
于 2013-03-07T16:22:41.620 に答える