簡體   English   中英

在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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM