如何总结SAS中的表中的所有数字列?
问题描述:
我有一个表格,根据我的初始输入将有可变数量的列。有没有一个函数来总结此表的所有数字列而不指定每列的名称?如何总结SAS中的表中的所有数字列?
现在我有每个列名硬编码proc sql命令。
CREATE TABLE &new_table_name AS
(SELECT SUM(CASE WHEN col1 = &state THEN 1 ELSE 0 END) AS month_01,
SUM(CASE WHEN col2 = &state THEN 1 ELSE 0 END) AS month_02,
SUM(CASE WHEN col3 = &state THEN 1 ELSE 0 END) AS month_03,
SUM(CASE WHEN col4 = &state THEN 1 ELSE 0 END) AS month_04,
SUM(CASE WHEN col5 = &state THEN 1 ELSE 0 END) AS month_05
);
样品输入会是这样的:
name m1 m2 m3 m4
aa 1 7 7 1
ab 2 4 2
ac 1 1
ad 1 3 1 1
ae 2 1 3
然后将样品输出将
name m1 m2 m3 m4
7 16 13 2
答
您正在寻找PROC MEANS
。或者真的有任何汇总处理。
data have;
infile datalines missover;
input name $ m1 m2 m3 m4;
datalines;
aa 1 7 7 1
ab 2 4 2
ac 1 1
ad 1 3 1 1
ae 2 1 3
;;;;
run;
proc means data=have;
output out=want sum=;
run;
而class
声明可以让你按状态分组或等等。 WHERE
也可以在PROC MEANS
中正常过滤。
离开var
声明关闭所有数值变量调用,或者你可以把在var
声明限制,如
var m1-m4;
如Reeza在评论中指出。
+1
除了Joe的回答,您还可以在proc中使用变量快捷键,例如m1-m4或m :(所有以m开头的变量)。 – Reeza
如果你没有名字,你需要建立一个动态查询。 –
发布/输出样本数据。我想知道这是不是一个proc转置。你的代码似乎与陈述的问题无关。 PROC SQL中不能使用变量列表。 – Reeza
矩阵我试图做的总和是后转置数据集。 –