根据条件 SAS 创建宏变量
create a macro variable based on a condition SAS
我有以下table
data have;
input x1;
datalines;
1
2
3
4
5
6
7
8
9
10
11
;
run;
并且我正在尝试创建一个宏变量,该变量最多分配 10 个不同的条目,这样我以后就可以自动为直方图创建正确数量的 bin(最多 10 个 bin)
我目前尝试利用的代码如下,但我不确定当有超过 10 个不同的观察时如何分配宏变量
PROC SQL NOPRINT;
SELECT COUNT(DISTINCT X1)
INTO: BIN_X1
FROM HAVE
HAVING (COUNT(DISTINCT X1) LE 10);
QUIT;
如果有超过10个不同的obs,我如何分配宏变量为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(,)
将 select 的最小值那个数字和 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;
我有以下table
data have;
input x1;
datalines;
1
2
3
4
5
6
7
8
9
10
11
;
run;
并且我正在尝试创建一个宏变量,该变量最多分配 10 个不同的条目,这样我以后就可以自动为直方图创建正确数量的 bin(最多 10 个 bin)
我目前尝试利用的代码如下,但我不确定当有超过 10 个不同的观察时如何分配宏变量
PROC SQL NOPRINT;
SELECT COUNT(DISTINCT X1)
INTO: BIN_X1
FROM HAVE
HAVING (COUNT(DISTINCT X1) LE 10);
QUIT;
如果有超过10个不同的obs,我如何分配宏变量为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(,)
将 select 的最小值那个数字和 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;