Hi,
i use proc print to have this result:
I need in the last row (yellow cell) the average of the column "totale" , not the sum. With the function "proc print" is possibile ???
I dont want use proc report beacuse the same value will repeat blank (es. column Region "REGION CENTRO NORD" the second will be blanck).
This is the code:
/* ESPORTAZIONE IN EXCEL */
dm 'odsresults; clear';
ods listing close;
/* ODS -- SETTIMANALE (in excel due fogli distinti) (non è possibile inserire grafici) */
ODS TAGSETS.EXCELXP file="&RETE\&NOME_FILE..XLS" gpath="&RETE\"
style=printer
OPTIONS (
Frozen_Headers = '3'
width_fudge='2.2'
default_column_width='3'
Autofilter = 'yes'
embedded_titles='yes'
suppress_bylines='yes'
sheet_interval='bygroup' sheet_label=' '
width_points='1' width_fudge='1'
Sheet_Name = "INSTALLAZIONI 2016"
absolute_column_width=
'30
,30
,100
,100
,100
,40
,100
,100
,70
,100
,100
,100
,100
,100
,100
,100
,100
,100
,100
,100
,100'
autofit_height='yes'
);
options missing=' ';
TITLE1 font=calibri h=5 "ANDAMENTO SETTIMANALE OPERATIVITA' CASSEVELOCI (INST.2016)";
/* TITLE2 '(Richieste totali pervenute - Interazioni con operatore)'; */
proc print data=CV.T08_PRINT noobs label split='*';
label Anno = 'Anno' /*30 */
MES = 'Mese' /*30 */
DT_INIZIO = 'Data inzio settimana' /*100 */
DT_FINE = 'Data fine settimana' /*100 */
REGION = 'Region' /*100 */
COD_AG = 'Cod_ag' /*40 */
Ag = 'Ag' /*100 */
KEYATM= 'KeyATM' /*100 */
DT_ATTIV_ATM_ = 'DT_installazione' /*70 */
TOT = 'Totale operazioni(media gg)' /*100 */
Confronto_MED = '% Crescita operazioni rispetto media gg mese anno preced. ATM sostituito' /*100 */
PRELIEVI = 'N° Prelievi(media gg)' /*800 */
crescita_N_PREL = '% Crescita N°prelievi rispetto media gg mese anno preced. ATM sostituito'
PRELIEVI_IMP = 'Imp Prelievi(media gg)' /*80 */
crescita_IMP_PREL = '% Crescita volumi prelievi rispetto media gg mese anno preced. ATM sostituito' /*100 */
TOT_VER ='Totale versamenti(media gg)' /*100 */
crescita_VER = '% Crescita volumi N°versamenti rispetto media gg mese anno preced. ATM sostituito' /*100 */
TOT_VER LABEL='Imp versamenti contanti(media gg)' /*100 */
crescita_VER_cont = '% Crescita volumi vers rispetto media gg mese anno preced. ATM sostituito' /*100 */
MAX_VER ='N° versamenti con più di 200 banconote' /*100 */
MAX_PREL ='N° prelevamenti di importo > 750€'; /*100 */;
sum TOT PRELIEVI TOT_VER;
WHERE YEAR(DT_ATTIV_ATM) = 2016;
run;
ODS TAGSETS.EXCELXP
OPTIONS ( Sheet_Name = "INSTALLAZIONI 2015" );
TITLE1 font=calibri h=5 "ANDAMENTO SETTIMANALE OPERATIVITA' CASSEVELOCI (INST.2015)";
proc print data=CV.T08_PRINT noobs label split='*';
label Anno = 'Anno' /*30 */
MES = 'Mese' /*30 */
DT_INIZIO = 'Data inzio settimana' /*100 */
DT_FINE = 'Data fine settimana' /*100 */
REGION = 'Region' /*100 */
COD_AG = 'Cod_ag' /*40 */
Ag = 'Ag' /*100 */
KEYATM= 'KeyATM' /*100 */
DT_ATTIV_ATM_ = 'DT_installazione' /*70 */
TOT = 'Totale operazioni(media gg)' /*100 */
Confronto_MED = '% Crescita operazioni rispetto media gg mese anno preced. ATM sostituito' /*100 */
PRELIEVI = 'N° Prelievi(media gg)' /*800 */
crescita_N_PREL = '% Crescita N°prelievi rispetto media gg mese anno preced. ATM sostituito'
PRELIEVI_IMP = 'Imp Prelievi(media gg)' /*80 */
crescita_IMP_PREL = '% Crescita volumi prelievi rispetto media gg mese anno preced. ATM sostituito' /*100 */
TOT_VER ='Totale versamenti(media gg)' /*100 */
crescita_VER = '% Crescita volumi N°versamenti rispetto media gg mese anno preced. ATM sostituito' /*100 */
TOT_VER LABEL='Imp versamenti contanti(media gg)' /*100 */
crescita_VER_cont = '% Crescita volumi vers rispetto media gg mese anno preced. ATM sostituito' /*100 */
MAX_VER ='N° versamenti con più di 200 banconote' /*100 */
MAX_PREL ='N° prelevamenti di importo > 750€'; /*100 */;
TOT PRELIEVI TOT_VER;
WHERE YEAR(DT_ATTIV_ATM) = 2015;
run;
ODS TAGSETS.EXCELXP CLOSE;
you have any suggestions please
You would be better off switching to proc report, it has more functionality for these types of things:
http://www2.sas.com/proceedings/forum2008/188-2008.pdf
Also, few tips on code formatting as that code is very hard to read - consistent casing, indentation and such like makes it more readable, see below, and an example of proc report:
ods tagsets.excelxp file="&RETE\&NOME_FILE..XLS" gpath="&RETE\" style=printer options (frozen_Headers='3' width_fudge='2.2' default_column_width='3' Autofilter='yes' embedded_titles='yes' suppress_bylines='yes' sheet_interval='bygroup' sheet_label=' ' width_points='1' width_fudge='1' sheet_name="INSTALLAZIONI 2016" absolute_column_width='30,30,100,100,100,40,100,100,70,100,100,100,100,100,100,100,100,100,100,100,100' autofit_height='yes'); options missing=' '; title1 font=calibri h=5 "ANDAMENTO SETTIMANALE OPERATIVITA' CASSEVELOCI (INST.2016)"; proc print data=cv.t08_print noobs label split='*'; label anno='Anno' mes='Mese' dt_inizio='Data inzio settimana' dt_fine='Data fine settimana' region='Region' cod_ag='Cod_ag' ag='Ag' keyatm= 'KeyATM' ...; sum tot prelievi tot_ver; where year(dt_attiv_atm)=2016; run; proc report data=cv.t08_print nowd split='~'; columns anno mes dt_inizio dt_fine region ...; define anno / 'Anno'; define mes / 'Mes'; define total_operazioni / analysis sum 'Total'; run;
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.