Sql 如何在SAS中对表中的所有数字列求和?
我有一个表,根据我的初始输入,它的列数是可变的。是否有一个函数可以对该表的所有数值列求和,而不指定每列的名称 现在,我在procsql命令中硬编码了每个列名Sql 如何在SAS中对表中的所有数字列求和?,sql,sas,Sql,Sas,我有一个表,根据我的初始输入,它的列数是可变的。是否有一个函数可以对该表的所有数值列求和,而不指定每列的名称 现在,我在procsql命令中硬编码了每个列名 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
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
语句将允许您按状态或其他方式进行分组<代码>其中在PROC-MEANS
中也可以很好地进行过滤
关闭var
语句将调用所有数值变量,或者您可以放入var
语句以进行限制,例如
var m1-m4;
正如Reeza在评论中指出的那样。您正在寻找
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
语句将允许您按状态或其他方式进行分组<代码>其中在PROC-MEANS
中也可以很好地进行过滤
关闭var
语句将调用所有数值变量,或者您可以放入var
语句以进行限制,例如
var m1-m4;
正如Reeza在评论中指出的那样。如果你没有名字,你需要构建一个动态查询。发布样本数据,输入/输出。我想知道这是否应该是一个过程转置。您的代码似乎与所述问题无关。您不能在PROC SQL中使用变量列表。我尝试对其进行求和的矩阵是一个post转置数据集。为什么不使用PROC MEANS或类似工具?如果您没有名称,则需要生成一个动态查询。post示例数据,in/out。我想知道这是否应该是一个过程转置。您的代码似乎与所述问题无关。您不能在PROC SQL中使用变量列表。我尝试对其进行求和的矩阵是一个后转置数据集。为什么不使用PROC MEANS或类似的方法?除了Joe的答案之外,您还可以在PROC中使用变量快捷方式,例如m1-m4或m:(所有变量均以m开头).除了Joe的答案,您还可以在程序中使用变量快捷方式,如m1-m4或m:(所有变量均以m开头)。