2014-01-13 12 views
0

새 행 만들기에 관심이있는 것은 특정 변수에 대한 조건부 SAS입니다.SAS의 행 조건부 삽입

이들은 RecordID, ItemName, ItemCount, ItemX, ItemY, ItemZ 열의 이름이라고 가정합니다.
ItemX, ItemY 및 ItemZ는 0보다 크거나 같을 수있는 숫자 변수입니다. ItemX, ItemY 및/또는 ItemZ가 0보다 큰 값을 보유 할 때 ItemName에 포함 된 새 행을 만들려고합니다. 변수 이름 (ItemX, ItemY, ItemZ) 및 숫자 값을 포함하는 ItemCount.

예를 들어, RecordNumber = 1 인 경우 ItemX = 5 및 ItemY = 10이면 ItemName = ItemX 및 ItemCount = 5가 새 행에 나타납니다. ItemName = ItemY 및 ItemCount = 10에는 자체 행이 있습니다.

SAS에서 어떻게해야합니까? 감사.

답변

2

아주 쉽게 :

data want(keep=ItemName ItemCount); 
set have; 
array items[3] itemx itemy itemz; 
format ItemName $32. ItemCount best.; 

do i=1 to 3; 
    if items[i] > 0 then do; 
     ItemName = vname(items[i]); 
     ItemCount = items[i]; 
     output; 
    end; 
end; 
run; 

이 항목 변수의 배열을 만듭니다. 해당 배열을 반복합니다. 상태를 확인하십시오. vname() 함수를 사용하여 변수 이름을 얻고 output 문을 사용하여 출력 레코드를 작성하십시오.

1

나는 당신이하고자하는 것을보고 있습니다.
<yoda> 당신은 PROC TRANSPOSE를 찾습니다. </yoda >

+0

니스! – DomPazz