BookmarkSubscribeRSS Feed
eduar78
Calcite | Level 5
PROC IMPORT OUT=salesByProduct DATAFILE= "/home/u36613848/sasuser.v94/ bsa570_v4_wk3_assignment_data.xlsx" 
2.	DBMS=xlsx REPLACE;
3.	GETNAMES=YES;
4.	RUN;
5.	 
6.  DATA salesByProduct;
7.	SET salesByProduct;
8.	year = YEAR(date);
9.	month = YEAR(date);
10.	RUN;
11.	 
12.	PROC REPORT DATA=salesByProduct NOWD;
13.	COLUMN ('Sales' year month) product,(sales);
14.	DEFINE year / GROUP STYLE (header)={background=lightgreen};
15.	DEFINE month / GROUP STYLE (header)={background=lightgreen};
16.	DEFINE product / ACROSS ' ' STYLE(header)={background=lightyellow};
17.	DEFINE sales / SUM STYLE(header)={background=lightyellow} FORMAT=DOLLAR15.2;
18.	BREAK AFTER year /SUMMARIZE DOL DUL;
19.	RBREAK AFTER/SUMMARIZE;
20.	COMPUTE AFTER year;
21.	CALL DEFINE('year','style','style=Header{pretext="SubTotal " tagattr="Type:String"}');
22.	ENDCOMP;
23.	COMPUTE AFTER;
24.	CALL DEFINE('year','style','style=Header{pretext="Grand Total " tagattr="Type:String"}');
25.	ENDCOMP;
26.	RUN
27.	 
28.	TITLE '2015 Sales By Product';
29.	PROC SGPLOT DATA=salesByProcudtByDate(WHERE=(year = 2015));
30.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
31.	STAT=sum DATASKIN=gloss;
32.	XAXIS DISPLAY=(nolabel noticks);
33.	YAXIS GRID;
34.	RUN;
35.	 
36.	TITLE '2016 Sales By Product';
37.	PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2016));
38.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
39.	STAT=sum DATASKIN=gloss;
40.	XAXIS DISPLAY=(nolabel noticks);
41.	YAXIS GRID;
42.	RUN;
43.	 
44.	TITLE '2017 Sales By Product';
45.	PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2017));
46.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
47.	STAT=sum DATASKIN=gloss;
48.	XAXIS DISPLAY=(nolabel noticks);
49.	YAXIS GRID;
50.	RUN;
51.	
52.	TITLE '2018 Sales By Product';
53.	PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2018));
54.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
55.	STAT=sum DATASKIN=gloss;
56.	XAXIS DISPLAY=(nolabel noticks);
57.	YAXIS GRID;
58.	RUN;

 

 

 

 

7 REPLIES 7
Reeza
Super User

Please show the error you're getting.

 

You could also reduce the last three procs to one using the BY statement. 

 


@eduar78 wrote:
PROC IMPORT OUT=salesByProduct DATAFILE= "/home/u36613848/sasuser.v94/ bsa570_v4_wk3_assignment_data.xlsx" 
2.	DBMS=xlsx REPLACE;
3.	GETNAMES=YES;
4.	RUN;
5.	 
6.  DATA salesByProduct;
7.	SET salesByProduct;
8.	year = YEAR(date);
9.	month = YEAR(date);
10.	RUN;
11.	 
12.	PROC REPORT DATA=salesByProduct NOWD;
13.	COLUMN ('Sales' year month) product,(sales);
14.	DEFINE year / GROUP STYLE (header)={background=lightgreen};
15.	DEFINE month / GROUP STYLE (header)={background=lightgreen};
16.	DEFINE product / ACROSS ' ' STYLE(header)={background=lightyellow};
17.	DEFINE sales / SUM STYLE(header)={background=lightyellow} FORMAT=DOLLAR15.2;
18.	BREAK AFTER year /SUMMARIZE DOL DUL;
19.	RBREAK AFTER/SUMMARIZE;
20.	COMPUTE AFTER year;
21.	CALL DEFINE('year','style','style=Header{pretext="SubTotal " tagattr="Type:String"}');
22.	ENDCOMP;
23.	COMPUTE AFTER;
24.	CALL DEFINE('year','style','style=Header{pretext="Grand Total " tagattr="Type:String"}');
25.	ENDCOMP;
26.	RUN
27.	 
28.	TITLE '2015 Sales By Product';
29.	PROC SGPLOT DATA=salesByProcudtByDate(WHERE=(year = 2015));
30.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
31.	STAT=sum DATASKIN=gloss;
32.	XAXIS DISPLAY=(nolabel noticks);
33.	YAXIS GRID;
34.	RUN;
35.	 
36.	TITLE '2016 Sales By Product';
37.	PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2016));
38.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
39.	STAT=sum DATASKIN=gloss;
40.	XAXIS DISPLAY=(nolabel noticks);
41.	YAXIS GRID;
42.	RUN;
43.	 
44.	TITLE '2017 Sales By Product';
45.	PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2017));
46.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
47.	STAT=sum DATASKIN=gloss;
48.	XAXIS DISPLAY=(nolabel noticks);
49.	YAXIS GRID;
50.	RUN;
51.	
52.	TITLE '2018 Sales By Product';
53.	PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2018));
54.	VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
55.	STAT=sum DATASKIN=gloss;
56.	XAXIS DISPLAY=(nolabel noticks);
57.	YAXIS GRID;
58.	RUN;

 

 

 

 


 

eduar78
Calcite | Level 5
 
1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 70         
 71         1.PROC IMPORT OUT=salesByProductByDate DATAFILE= "/home/u36613848/sasuser.v94/ bsa570_v4_wk3_assignment_data.xlsx"
            __
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 72         2.DBMS=xlsx REPLACE;
 
 73         3.GETNAMES=YES;
            __
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 74         4.RUN;
            __
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 75         5.
            __
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 76         6.DATA salesByProductByDate;
 
 77         7.SET salesByProductByDate;
            __
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 78         8.year = YEAR(date);
            __
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 79         9.month = YEAR(date);
            __
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 80         10.RUN;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 81         11.
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 82         12.PROC REPORT DATA=salesByProductByDate NOWD;
 
 83         13.COLUMN ('Sales' year month) product,(sales);
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 84         14.DEFINE year / GROUP STYLE (header)={background=lightgreen};
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 85         15.DEFINE month / GROUP STYLE (header)={background=lightgreen};
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 86         16.DEFINE product / ACROSS ' ' STYLE(header)={background=lightyellow};
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 87         17.DEFINE sales / SUM STYLE(header)={background=lightyellow} FORMAT=DOLLAR15.2;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 88         18.BREAK AFTER year /SUMMARIZE DOL DUL;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 89         19.RBREAK AFTER/SUMMARIZE;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 90         20.COMPUTE AFTER year;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 91         21.CALL DEFINE('year','style','style=Header{pretext="SubTotal " tagattr="Type:String"}');
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 92         22.ENDCOMP;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 93         23.COMPUTE AFTER;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 94         24.CALL DEFINE('year','style','style=Header{pretext="Grand Total " tagattr="Type:String"}');
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 95         25.ENDCOMP;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 96         26.RUN
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 97         27.
 98         28.TITLE '2015 Sales By Product';
 
 99         29.PROC SGPLOT DATA=salesByProcudtByDate(WHERE=(year = 2015));
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 100        30.VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 101        31.STAT=sum DATASKIN=gloss;
 
 102        32.XAXIS DISPLAY=(nolabel noticks);
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 103        33.YAXIS GRID;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 104        34.RUN;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 105        35.
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 106        36.TITLE '2016 Sales By Product';
 
 107        37.PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2016));
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 108        38.VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 109        39.STAT=sum DATASKIN=gloss;
 
 110        40.XAXIS DISPLAY=(nolabel noticks);
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 111        41.YAXIS GRID;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 112        42.RUN;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 113        43.
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 114        44.TITLE '2017 Sales By Product';
 
 115        45.PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2017));
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 116        46.VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 117        47.STAT=sum DATASKIN=gloss;
 
 118        48.XAXIS DISPLAY=(nolabel noticks);
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 119        49.YAXIS GRID;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 120        50.RUN;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 121        51.
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 122        52.TITLE '2018 Sales By Product';
 
 123        53.PROC SGPLOT DATA=salesByProductByDate(WHERE=(year = 2018));
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 124        54.VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster
            ___
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 125        55.STAT=sum DATASKIN=gloss;
 
 126        56.XAXIS DISPLAY=(nolabel noticks);
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 127        57.YAXIS GRID;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 128        58.RUN;
            ___
            180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 129        
 130        
 131        OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 143        
These are the errors.
Tom
Super User Tom
Super User

You have pasted line numbers into your program.  Remove those.

eduar78
Calcite | Level 5

Thank you much, now is working good. I'm learning the process of SAS!!! 

eduar78
Calcite | Level 5

Ok, thanks for the support now I'm receiving this error from this below: 

 

TITLE '2015 Sales By Product';
PROC SGPLOT DATA=salesByProcudtByDate(WHERE=(year = 2015));
VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster 
STAT=sum DATASKIN=gloss;
XAXIS DISPLAY=(nolabel noticks);
YAXIS GRID;
RUN;

 The log error shows this;

95         TITLE '2015 Sales By Product';
 96         PROC SGPLOT DATA=salesByProcudtByDate(WHERE=(year = 2015));
 ERROR: File WORK.SALESBYPROCUDTBYDATE.DATA does not exist.
 97         VBAR product / RESPONSE=sales GROUP=month GROUPDISPLAY=cluster
 ERROR: No data set open to look up variables.
 ERROR: No data set open to look up variables.
 ERROR: No data set open to look up variables.
Reeza
Super User
Your data set doesn't exist.

salesByProcudtByDate

Note product is misspelled and previously you used a different data set name. So unless you created that data set outside of this code we don't know where that's coming form.

But the new code shows an import with that name so now I"m confused. I think it's just a data set naming issue that you need to ensure the data is imported first and spelled correctly.
Astounding
PROC Star
Some additional cleanup is needed. For example, the previous RUN statement is missing a semicolon. And this statement is probably incorrect:

month = year(date) ;

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
SAS Enterprise Guide vs. SAS Studio

What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 7 replies
  • 806 views
  • 0 likes
  • 4 in conversation