여러 데이터 세트를 두 숫자 사이의 별도 그룹에 넣어 비교하려고합니다. 원래 나는 다음과 같은 진술을 가지고있었습니다.SAS : 두 숫자 사이의 값을 비교하여 별도의 버킷을 만들 수 있습니다.
if COLUMN1 gt 0 and COLUMN1 LE 1000 then PRICE_GROUP = 1000;
나는 이것을 1000에서 100,000까지 올렸습니다. 유일한 문제는 각 price_group에 몇 개가 있는지를 계산하면 일부 price_groups가 누락되었습니다 (57,000 개는 값이 없기 때문에 일부 그룹에서는 표시되지 않습니다 (Price_group)). 내가 생각하는 솔루션은 각각에 대한 경계가있는 테이블을 만든 다음 실제 값과 상한값 및 하한값을 비교하는 것입니다.
proc iml;
mat = j(100,2,0);
total = 100000;
mat[1,1] = 0;
mat[1,2] = mat[1,1] + (total/100);
do i = 2 to nrow(mat);
mat[i,1] = mat[i-1,1] + (total/100);
mat[i,2] = mat[i,1] + (total/100);
end;
create dataset from mat;
append from mat;
quit;
이렇게하면 값을 비교할 수있는 표가 생성되지만, proc iml 외에는 더 쉬운 방법이 있습니까? 다음으로 각 값을 두 개의 열과 비교하고 테이블에 새 열을 만들어 각 버킷에 카운트 할 루프를 만들려고했습니다. 이것은 여전히 비효율적 인 집중적 인 프로세스 인 것처럼 보입니다.