2011-02-20 13 views

Odpowiedz

9

Po pierwsze, nie jest jasne, czy mówimy o oświadczeniu rename w proc datasets lub w kroku danych. Jeśli nie musisz robić nic więcej w danych, powinieneś zdecydowanie użyć w tym celu plików danych proc, ponieważ w przeciwnym razie (w kroku danych) niepotrzebnie czytasz/zapisujesz każdy rekord w zestawie danych, aby zmienić nazwy zmiennych .

Jeśli pomocą krok danych, wystarczy użyć

rename col1-col15=new1-new15; 

Nie jestem pewien, czy można używać tego skrótu w zbiorach danych proc. Co prowadzi nas do twojego pytania z pętlą. Chyba że robisz to wiele razy lub dynamicznie, prawdopodobnie równie łatwo jest skopiować/wkleić kod 15 razy. Oto sposób, aby wygenerować oświadczenie chcesz umieścić ją w zmiennej makro i używać, makro zmienna w rachunku przemianowania:

data _null_; 
    length myVar $ 1000; 
    *myVar=''; 
    do i=1 to 15; 
    myVar=catx(' ',myVar,' ',cats('col',i,'=','new',i)); 
    end; 
    call symput('rename',myVar); 
run; 

%put &rename; 

proc datasets library=mylibrary; 
    modify mydataset; 
    rename &rename; 
run; 
3

oto sposób to zrobić w przypadku, gdy zmienna nazwy pasują ładny , proste nazewnictwo wzór:

DATA out; 
SET in; 
ARRAY oldnames (15) col1-col15; 
ARRAY newnames (15) new1-new15; 
DO i = 1 TO 15; 
     newnames(i) = oldnames(i) ; 
END; 
RUN; 

Lub, bardziej ogólnie:

DATA out; 
SET in; 
ARRAY oldnames (4) abc def ghi jkl ; 
ARRAY newnames (4) mno pqr stu vwx ; 
DO i = 1 TO 4; 
     newnames(i) = oldnames(i) ; 
END; 
RUN; 
+0

trzeba by dodać oświadczenie drop, w przeciwnym razie jesteś po prostu dodanie zmiennych new1-new15. –

Powiązane problemy