2013-03-07 21 views

回答

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; 
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; 
0

簡單一點的版本Keith的代碼,避免了IF:

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; 
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; 
相關問題