Hello,
I am using a proc summary step to summarize my data.
However, I want to divide the summary statistics in the "VAR" statement below by 1,000,000.
PROC SUMMARY DATA=ExecSummary nway missing;
CLASS
JOBID
PERIOD_ID
SCENARIO;
VAR
RQ01
RQ02
NCO_9Q
NCO_13Q
;
OUTPUT out=ExecOutput (drop=_FREQ_ _TYPE_) sum=;
RUN;
Is there anyway to divide the summary statistics by 1 million directly in the proc summary step?
Thanks
You could do make a weight variable:
data need / view=need;
set execsummary;
_wgt=1/1000000;
run;
PROC SUMMARY DATA=need nway missing;
CLASS JOBID PERIOD_ID SCENARIO;
VAR RQ01 RQ02 NCO_9Q NCO_13Q ;
weight _wgt;
OUTPUT out=ExecOutput (drop=_FREQ_ _TYPE_) sum=;
RUN;
There is not much efficiency loss here, since NEED is a data set view, not a data set file. NEED will be activated only when called by the proc summary, and will stream its data to the proc, not to disk storage. So virtually no input/output cost.
Can you apply a format to the results instead to scale the results?
@Terho wrote:
Hello,
I am using a proc summary step to summarize my data.
However, I want to divide the summary statistics in the "VAR" statement below by 1,000,000.
PROC SUMMARY DATA=ExecSummary nway missing;
CLASS
JOBID
PERIOD_ID
SCENARIO;
VAR
RQ01
RQ02
NCO_9Q
NCO_13Q
;
OUTPUT out=ExecOutput (drop=_FREQ_ _TYPE_) sum=;
RUN;
Is there anyway to divide the summary statistics by 1 million directly in the proc summary step?
Thanks
You could do make a weight variable:
data need / view=need;
set execsummary;
_wgt=1/1000000;
run;
PROC SUMMARY DATA=need nway missing;
CLASS JOBID PERIOD_ID SCENARIO;
VAR RQ01 RQ02 NCO_9Q NCO_13Q ;
weight _wgt;
OUTPUT out=ExecOutput (drop=_FREQ_ _TYPE_) sum=;
RUN;
There is not much efficiency loss here, since NEED is a data set view, not a data set file. NEED will be activated only when called by the proc summary, and will stream its data to the proc, not to disk storage. So virtually no input/output cost.
Thank you! This worked wonderfully!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.