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

SAS-动态计算列数并对每个列求和的代码,sas,Sas,我想知道是否有人能帮我解决一个编码问题 背景–我有一个项目,导入一些文件并使用这些文件中的数据执行投影。文件的内容决定了随后输出大小的某些方面。简单地说,加载到中的数据中的值会驱动后面表的大小和形状,这可能会有所不同 下面的代码就是这个问题的一个例子 加载的数据将有一个可变的年份开始(注:wf2009,2009是第一年)和可变范围(本例从2009年到2030年,但也会有所不同) 我不确定如何继续的地方是: sum(wf2009) = y2009 sum(wf2010) = y2010 sum(w

我想知道是否有人能帮我解决一个编码问题

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

下面的代码就是这个问题的一个例子

加载的数据将有一个可变的年份开始(注:wf2009,2009是第一年)和可变范围(本例从2009年到2030年,但也会有所不同)

我不确定如何继续的地方是:

sum(wf2009) = y2009
sum(wf2010) = y2010
sum(wf2011) = y2011
sum(wf2012) = y2012;
在调用各自列之和的行序列中,我如何使其成为动态的,以便从变量填充开始年份,并每年递增,直到最后一年也是变量

有人解决过类似的问题吗


干杯,

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

因此,您的过程摘要如下所示

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;

谢谢你,基思。这可能很有效。星期一我回去工作时,我会看一看的。注意:在某些阶段,名称需要更改,以便附加其他摘要度量值,但这可能在其自身步骤中更简单。如果要添加更多度量值,请使用AUTONAME选项,该选项将使用摘要(总和、平均值等)作为变量名的后缀。e、 g.总和=平均值=/autoname。另一种方法是从DICTIONARY.COLUMNS中读入变量名,并构造过程摘要中使用的所需表达式,这是可能的,但有点混乱。嗨,Keith,谢谢你的帮助。这很好,我只是简单地添加了一个步骤,宏在年份中循环并重命名变量标题。
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;