2017-02-08 1 views
1

SAS 데이터 세트에 고정 필드가 있습니다. 비용이라고합시다. 20 개의 다른 열을 만들고 싶습니다. 비용 - 5, 비용 - 10, 비용 - 15 등이 있지만 여러 필드에서이 작업을 수행해야하므로 코드를 작성하지 않으려 고합니다.SAS는 열을 작성하기 위해 루프를 수행합니다.

SAS의 do 루프에서 어떻게 할 수 있습니까? 또는 이렇게 쉬운 방법이 있다면, 나는 알고 싶습니다. 감사!

답변

2

일반적인 접근법은 여러 가지 작업을 수행하는 경우 배열 및 매크로를 사용하는 것입니다.

data class; 
    set sashelp.class; 
    array ages[5];  *your array, holding your 5 new columns; 
    do _i = 1 to 5;  *loop over the array; 
    ages[_i] = age-_i; *or -(5*_i) or whatever you are doing; 
    end; 
run; 

그런 다음, 당신은 많은 변수에 대해, 그 네 줄을 매크로에 넣어, 변경 될 수 있습니다 어떤 매개 변수를 생성하고, datastep에서 당신이 필요하지만 여러 번 호출 것을 수행하려는 경우. 루프는 매크로 내부에 있으며 매크로 루프가 아닌 데이터 단계 루프입니다.

변수를 어레이 문에 명시 적으로 지정하거나 SAS가 기본적으로 수행하는 작업을 수행 할 수 있습니다. 지명 된 변수를 지능적으로 명명하려면 매크로를 작성하여 명명 된 변수를 작성할 수도 있습니다.

+0

감사합니다. 나는 지금 일하고있다. 정말 고마워요 –

+0

사실 조는 나이를 먹고 5 % 줄이고 10 % 줄이는 등의 노력을하고 있습니다.하지만 지금은 효과가 없습니다. 나는 SAS에 대해 어리 석다. 이견있는 사람? –

+0

'나이 [_i] = 나이 * (.05 * _i);'또는 그와 비슷한 것으로 유감입니다. – Joe

관련 문제