2013-03-07 2 views

답변

1

변수 이름을 하드 코딩하지 않으려는 경우 아래 코드가 작동해야합니다. 는 IF를 피하는 키스의 코드

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

2로 옮겨진 싶지을 사용하여 설정 한 다른 데이터의 컬럼에 넣어 변수와 그 값의 이름을 알아?

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

약간 간단한 버전은 : 당신이 "알고"하지 않으려면

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; 
관련 문제