select - 根据条件 SAS 创建宏变量
问题描述
我有下表
data have;
input x1;
datalines;
1
2
3
4
5
6
7
8
9
10
11
;
run;
我正在尝试创建一个宏变量,它将不同条目的数量最多分配十个,这样我就可以稍后为直方图自动创建正确数量的 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(,)
将选择该数字的最小值和 10。
请注意,SAS 函数(min、max 等)采用两个或多个参数并仅对当前观察的这些参数起作用,但 SQL 聚合函数(min、max 等)仅采用一个参数并聚合该参数的值代表多个观察。
推荐阅读
- python - 将文本文件读入字典
- python - 如何修复'TypeError:sort()的无效关键字参数'
- ios - Xcode 编译意外结果
- triggers - 尝试从元数据更新标准对象中的值
- android - renameTo 总是返回 false,即使我在 Manifest (ANDROID) 上使用 WRITE_EXTERNAL_STORAGE
- angular - 每 15 个字符换行一次
- windows - 直接 x 着色器的类型名称 ID3D10Blob 背后的词源是什么?
- r - 如何使用 R 取消数据集
- c# - .NET Core 3.0.0-preview5 上的 Blazor 中组件之间的导航
- codenameone - IOS Codenameone 应用程序每次在构建服务器上出错“符号:变量显示”