Select 根据条件创建宏变量

Select 根据条件创建宏变量,select,sas,having,insert-into,proc-sql,Select,Sas,Having,Insert Into,Proc Sql,我有下表 data have; input x1; datalines; 1 2 3 4 5 6 7 8 9 10 11 ; run; 我正在尝试创建一个宏变量,它将不同条目的数量分配到最多10个,这样我就可以在以后为直方图自动创建正确数量的存储单元(最多10个存储单元) 我目前试图利用的代码如下所示,但我不确定当存在10个以上不同的观察值时如何分配宏变量 PROC SQL NOPR

我有下表

data have;
    input x1;
    datalines;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ;
run;
我正在尝试创建一个宏变量,它将不同条目的数量分配到最多10个,这样我就可以在以后为直方图自动创建正确数量的存储单元(最多10个存储单元)

我目前试图利用的代码如下所示,但我不确定当存在10个以上不同的观察值时如何分配宏变量

PROC SQL NOPRINT;
    SELECT COUNT(DISTINCT X1)
        INTO: BIN_X1
        FROM HAVE
        HAVING (COUNT(DISTINCT X1) LE 10);
QUIT;

如果有超过10个不同的OB,如何将宏变量分配为10?

只需使用SAS函数
min(,)
将计数截断为最大值10

proc sql noprint;
  select min(count(distinct x1),10)
    into :bin_x1 trimmed
  from have
  ;
quit;
因此,SQL聚合函数
count()
将查看数据集中存在多少不同的X1值,然后SAS函数
min(,)
将选择该数字的最小值和10


请注意,SAS函数(min、max等)使用两个或多个参数,并仅处理当前观测值的参数,但SQL聚合函数(min、max等)仅使用一个参数,并聚合参数在多个观测值中表示的值。

只需使用SAS函数
min(,)
将计数最大值截断为10

proc sql noprint;
  select min(count(distinct x1),10)
    into :bin_x1 trimmed
  from have
  ;
quit;
因此,SQL聚合函数
count()
将查看数据集中存在多少不同的X1值,然后SAS函数
min(,)
将选择该数字的最小值和10


请注意,SAS函数(min、max等)使用两个或多个参数,并仅处理当前观测值的参数,但SQL聚合函数(min、max等)仅使用一个参数,并聚合该参数在多个观测值中表示的值。

是否尝试将10放入宏列表中,然后可以使用outobs=限制记录。问题是当超过10条记录时,您想要哪10条记录

PROC SQL outobs=10;
SELECT X1
    INTO: BIN_X1 separated by ","
    FROM HAVE;
    QUIT;

    %put &Bin_x1;

如果要将10放入宏列表中,则可以使用outobs=限制记录。问题是当超过10条记录时,您想要哪10条记录

PROC SQL outobs=10;
SELECT X1
    INTO: BIN_X1 separated by ","
    FROM HAVE;
    QUIT;

    %put &Bin_x1;

听起来你可能想在这里用PROC RANK来表示组=10?我会读到关于PROC RANKIt的内容听起来你可能想在这里用PROC RANK来表示组=10?我会读到关于PROC RANKI的内容,我想计算不同观察的总数,如果有超过10个不同的OB,即上面有11个不同的条目,那么我会强制变量为10,以便实现自动装箱?使用PROC FREQ中的NLEVELES获取不同值的数量,然后使用宏逻辑确定是否需要装箱,以及如何装箱。如果您对自己的滚动不感兴趣,可以使用一些编写的宏:我想计算不同观察的总数,如果有超过10个不同的OB,即上面有11个不同的条目,那么我会强制变量为10,所以实现自动装箱?使用PROC FREQ中的NLEVELES获取不同值的数量,然后使用宏逻辑确定是否需要装箱,以及如何装箱。如果你对自己的宏不感兴趣,这里有一些编写的宏:很好,p.s.修剪语句有什么影响吗?
timmed
关键字将删除将数字转换为文本所产生的空格,以便将其存储在宏变量中。我一生都在寻找这个宏,注意:修剪语句有什么影响吗?
timmed
关键字将删除将数字转换为文本所产生的空格,以便将其存储在宏变量中。我一直在寻找这个关键字