【发布时间】:2021-03-04 15:55:55
【问题描述】:
我有以下代码:
PROC SQL INOBS=10 OUTOBS=10;
CREATE TABLE WORK.FREQUENCY_&ColumnName AS
SELECT t1.&ColumnName,
(COUNT(t1.&ColumnName)) AS COUNT_of_&ColumnName
FROM &libname..&tblname t1
GROUP BY t1.&ColumnName
ORDER BY COUNT_of_&ColumnName DESC;
此代码有效,但使用此代码我选择所有类型的变量,但我只想选择一个变量是 CHAR。
有没有办法用一个简单的 where 子句来创建这个条件?还是我需要创建一个“如果条件”?如果是,我该如何创建它?
谢谢!
【问题讨论】:
-
如果您可以使用 PROC FREQ 或 MEANS 代替,您可以使用自动变量
_character_来引用所有字符值。如果这是您所有字符值和这些值的计数的摘要,则此方法将起作用。将table语句中的变量替换为_character_gist.github.com/statgeek/e0903d269d4a71316a4e -
您也可以通过查询 sashelp.vcolumn 或 dictionary.column 表来选择所有字符变量来生成动态列表。
-
宏变量COLNAME是如何设置的?当 COLNAME 引用字符变量时想要做什么?您不想创建输出表或创建一个空表吗?你能分享你正在做的事情的更大背景吗?您很可能希望在生成要计数的代码之前进行过滤。