이 SAS 데이터 단계 블록에서 TEST_Table이라는 SQL 쿼리에서 테이블을 설정합니다. 이 테이블에는 PREFIX_1 ~ PREFIX_20이라는 큰 섹션의 컬럼을 포함하여 여러 개의 컬럼이 있습니다. 각 열은 PREFIX_부터 시작하여 1에서 20까지의 숫자로 증가합니다.SAS : 동적으로 변수 이름 설정
각 열을 반복적으로 순환하여 해당 열의 값을 분석합니다.
다음은 내가 가고자하는 것의 예입니다. 보시다시피 각 반복마다 증가하는 변수를 만들고 싶습니다. 그런 다음 검사 할 변수 이름의 일부로 해당 개수 값을 사용합니다.
data TEST_Data;
set TEST_Table;
retain changing_number;
changing_number=1;
do while(changing_number<=20);
if PREFIX_changing_number='BAD_IDENTIFIER' then do;
PREFIX_changing_number='This is a bad part';
end;
end;
run;
SAS에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 20
if PREFIX_1 = 'BAD_IDENTIFIER' then do;
PREFIX_1 = 'This is a bad part';
end;
if PREFIX_2 = ...
단순히 1에서 개별적으로 각각의 값을 확인하여 그것을 할 수있어하지만은 나중에 내가 40 컬럼 세트와 같은 일을하고있을 것이다 정말 독이 될 것이다.
아이디어가 있으십니까?
data TEST_Data;
set TEST_Table;
array SC $ SC1-SC20;
do i=1 to dim(SC);
if SC{i}='xxx' then do;
SC{i}="bad part";
end;
end;
run;
차이점없이 여러 부분을 제거 할 수 있습니다. 변수를 명시 적으로 지정하면 {*}는 불필요합니다. i = 1; 절대적으로 아무것도하지 않습니다. 나는 당신의 코드를 쉽게 관리 할 수있게 해주므로 dim (SC) 대신 20을 사용하는 것을 권장한다. – Joe
@Joe 이러한 변경 사항은 매력보다 효과적입니다. – Stoating