在SAS中将变量拆分为相等的宽度间隔

Ku-*_*ala 2 sas

我想创建一个离散变量,它将变量x除以1000的间隔.我所拥有的是以下内容:

DATA have; 
   INPUT x; 
   DATALINES; 
1200
3200
5300
49 
6500
;
RUN;
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的

data want;
input x y $5-14;
DATALINES; 
1200 1000-2000
3200 3000-4000
5300 5000-6000
0049 0000-1000
6500 6000-7000
; 
RUN;
Run Code Online (Sandbox Code Playgroud)

我当然可以使用if else语句编写数据步骤来定义间隔,但是我有100个这样的间隔,所以这将是非常耗时的.

谢谢.

Chr*_*s J 6

您可以使用该round()函数,舍入到最接近的1000,但首先应用500的偏移量.这会给你上限.然后减去1000得到下限.

data have ;
  input x ;
  upper = round(x+500,1000) ;
  lower = sum(upper,-1000) ;
  y = catx('-',put(lower,z4.),put(upper,z4.)) ;
datalines ;
1200
3200
5300
49
6500
;
run ;
   x    upper    lower        y

1200     2000     1000    1000-2000
3200     4000     3000    3000-4000
5300     6000     5000    5000-6000
  49     1000        0    0000-1000
6500     7000     6000    6000-7000

另一种方法是基于使用1000个增量的循环生成的数据集来定义格式.