SAS - 用于动态计算列数并对每个列求和的代码

时间:2012-03-16 01:13:15

标签: sas

我想知道是否有人可以帮助解决我遇到的编码问题。

背景 - 我有一个项目可以导入一些文件并使用这些文件中的数据来执行投影。文件的内容决定了后面输出大小的某些方面。简单地说,加载的数据中的值会驱动后续表格的大小和形状,这可能会有所不同。

以下代码是问题的一个示例。

加载的数据将具有可变的年份开始(注意wf2009,2009是第一年)和可变范围(此示例从2009年到2030年,但这也会有所不同)。

proc summary data= labeled_proj_data_hc;
class jurisdiction specialty measure;
types jurisdiction*specialty*measure;
VAR wf2009--wf2030;
output out= sum_labeled_proj_data_hc
    sum(wf2009) = y2009
    sum(wf2010) = y2010
    sum(wf2011) = y2011
    sum(wf2012) = y2012;
run;

我不确定如何继续:

sum(wf2009) = y2009
sum(wf2010) = y2010
sum(wf2011) = y2011
sum(wf2012) = y2012;

在要求各自列的总和的行序列中,如何使这个动态化,以便从变量填充起始年份,并且每年递增直到去年也是变量。

有没有人解决过类似的问题。

干杯,

1 个答案:

答案 0 :(得分:1)

是否需要重命名变量?如果没有,则可以使用:wildcard运算符访问以'wf'开头的所有变量,然后将SUM =放在输出语句中,这将保留原始名称。

所以你的proc摘要看起来像这样。

proc summary data= labeled_proj_data_hc;
class jurisdiction specialty measure;
types jurisdiction*specialty*measure;
VAR wf: ;
output out= sum_labeled_proj_data_hc
    sum=;
run;