使 SAS 中的 PROC MEANS 语句产生变量而不是数据集
Making the PROC MEANS statement in SAS produce a variable instead of a dataset
我需要获取列中所有值的总和(下面代码中的"var1")。据我所知,这是按如下方式完成的:
proc means data = somedata sum var1;
output out = sumtable sum = sum;
run;
我想在下一步中用作变量的总和。是否可以让上面的 OUTPUT 语句将总和存储在一个新变量中,而不是将其写入一个全新的数据集?如果是这样,它的语法是什么?
听起来你想要一个宏变量而不是数据步骤。
在我看来,这最容易通过 PROC SQL 步骤而不是 PROC MEANS 来完成。
您的 PROC MEANS 看起来也不正确,VAR1 不属于那里并且会产生错误。
proc sql;
select sum(var1) into :sum_var1
from somedata;
quit;
%put &sum_var1;
您可以使用将解析为变量值的 &sum_var1 在代码的其他部分访问该变量。值得注意的是,所有宏变量都存储为文本。
一句话,没有。您可以按照 Reeza 的建议将值作为文本字符串存储到宏变量中,但如果您想将其存储为变量,则该变量需要在数据集中。
如果您想将该变量用于某些用途,将该变量带回到未来的数据步骤中并不难。只需引用存储它的数据集。
proc summary data=sashelp.class ;
var height weight ;
output out=class_summary sum=total_height total_weight;
run;
data new ;
set sashelp.class;
if _n_=1 then set class_summary;
fraction_of_total_wt = weight / total_weight;
fraction_of_total_ht = height / total_height;
run;
我需要获取列中所有值的总和(下面代码中的"var1")。据我所知,这是按如下方式完成的:
proc means data = somedata sum var1;
output out = sumtable sum = sum;
run;
我想在下一步中用作变量的总和。是否可以让上面的 OUTPUT 语句将总和存储在一个新变量中,而不是将其写入一个全新的数据集?如果是这样,它的语法是什么?
听起来你想要一个宏变量而不是数据步骤。 在我看来,这最容易通过 PROC SQL 步骤而不是 PROC MEANS 来完成。 您的 PROC MEANS 看起来也不正确,VAR1 不属于那里并且会产生错误。
proc sql;
select sum(var1) into :sum_var1
from somedata;
quit;
%put &sum_var1;
您可以使用将解析为变量值的 &sum_var1 在代码的其他部分访问该变量。值得注意的是,所有宏变量都存储为文本。
一句话,没有。您可以按照 Reeza 的建议将值作为文本字符串存储到宏变量中,但如果您想将其存储为变量,则该变量需要在数据集中。
如果您想将该变量用于某些用途,将该变量带回到未来的数据步骤中并不难。只需引用存储它的数据集。
proc summary data=sashelp.class ;
var height weight ;
output out=class_summary sum=total_height total_weight;
run;
data new ;
set sashelp.class;
if _n_=1 then set class_summary;
fraction_of_total_wt = weight / total_weight;
fraction_of_total_ht = height / total_height;
run;