我试图通过将它们放在两个数字之间的不同组中来比较多组数据。最初我有这样的陈述,
if COLUMN1 gt 0 and COLUMN1 LE 1000 then PRICE_GROUP = 1000;
我把这个增加了 1000 到 100,000。唯一的问题是,一旦我计算了每个 price_group 中有多少个 price_groups,就会丢失一些 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 之外还有更简单的方法吗?接下来我将执行一个循环来将每个值与两列进行比较,并在表上创建一个新列以获取每个存储桶中的计数。这似乎仍然是一个低效的密集过程。