BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
SASRB
Obsidian | Level 7

Dears,

 

would you please clarify the reason of the following issue I encountered during the activity with p105a03.sas (SAS Studio)?

The first time everything was fine with running the code.

data cars_update;
    set sashelp.cars;
	keep Make Model MSRP Invoice AvgMPG;
	AvgMPG=mean(MPG_Highway, MPG_City);
	label MSRP="Manufacturer Suggested Retail Price"
          AvgMPG="Average Miles per Gallon"
          Invoice="Invoice Price";
run;

proc means data=cars_update min mean max;
    var MSRP Invoice;
run;

proc print data=cars_update label;
    var Make Model MSRP Invoice AvgMPG;
run;

SASRB_0-1659556713470.png

Due to a several days delay in my training, I wanted to refresh the knowledge and tried to complete the same task once again.

However, the outcome is not the same. Upon the original code run I can see the price values:

SASRB_1-1659557035640.png

However, upon modifying the code according to the task, the invoice value becomes empty.

SASRB_2-1659558406955.png

 
 1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 72         
 73         ***********************************************************;
 74         *  Activity 5.03                                          *;
 75         *    1) Modify the LABEL statement in the DATA step to    *;
 76         *       label the Invoice column as Invoice Price.        *;
 77         *    2) Run the program. Why do the labels appear in the  *;
 78         *       PROC MEANS report but not in the PROC PRINT       *;
 79         *       report? Fix the program and run it again.         *;
 80         ***********************************************************;
 81         
 82         data cars_update;
 83             set sashelp.cars;
 84         keep Make Model MSRP Invoice AvgMPG;
 85         AvgMPG=mean(MPG_Highway, MPG_City);
 86         label MSRP="Manufacturer Suggested Retail Price"
 87                   AvgMPG="Average Miles per Gallon";
 88                   Invoice="Invoice Price";
 89         run;
 
 NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
       88:19   
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Acura Model=MDX Type=SUV Origin=Asia DriveTrain=All MSRP=$36,945 Invoice=. EngineSize=3.5 Cylinders=6 Horsepower=265
 MPG_City=17 MPG_Highway=23 Weight=4451 Wheelbase=106 Length=189 AvgMPG=20 _ERROR_=1 _N_=1
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Acura Model=RSX Type S 2dr Type=Sedan Origin=Asia DriveTrain=Front MSRP=$23,820 Invoice=. EngineSize=2 Cylinders=4
 Horsepower=200 MPG_City=24 MPG_Highway=31 Weight=2778 Wheelbase=101 Length=172 AvgMPG=27.5 _ERROR_=1 _N_=2
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Acura Model=TSX 4dr Type=Sedan Origin=Asia DriveTrain=Front MSRP=$26,990 Invoice=. EngineSize=2.4 Cylinders=4 Horsepower=200
 MPG_City=22 MPG_Highway=29 Weight=3230 Wheelbase=105 Length=183 AvgMPG=25.5 _ERROR_=1 _N_=3
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Acura Model=TL 4dr Type=Sedan Origin=Asia DriveTrain=Front MSRP=$33,195 Invoice=. EngineSize=3.2 Cylinders=6 Horsepower=270
 MPG_City=20 MPG_Highway=28 Weight=3575 Wheelbase=108 Length=186 AvgMPG=24 _ERROR_=1 _N_=4
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Acura Model=3.5 RL 4dr Type=Sedan Origin=Asia DriveTrain=Front MSRP=$43,755 Invoice=. EngineSize=3.5 Cylinders=6 Horsepower=225
 MPG_City=18 MPG_Highway=24 Weight=3880 Wheelbase=115 Length=197 AvgMPG=21 _ERROR_=1 _N_=5
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Acura Model=3.5 RL w/Navigation 4dr Type=Sedan Origin=Asia DriveTrain=Front MSRP=$46,100 Invoice=. EngineSize=3.5 Cylinders=6
 Horsepower=225 MPG_City=18 MPG_Highway=24 Weight=3893 Wheelbase=115 Length=197 AvgMPG=21 _ERROR_=1 _N_=6
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Acura Model=NSX coupe 2dr manual S Type=Sports Origin=Asia DriveTrain=Rear MSRP=$89,765 Invoice=. EngineSize=3.2 Cylinders=6
 Horsepower=290 MPG_City=17 MPG_Highway=24 Weight=3153 Wheelbase=100 Length=174 AvgMPG=20.5 _ERROR_=1 _N_=7
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A4 1.8T 4dr Type=Sedan Origin=Europe DriveTrain=Front MSRP=$25,940 Invoice=. EngineSize=1.8 Cylinders=4
 Horsepower=170 MPG_City=22 MPG_Highway=31 Weight=3252 Wheelbase=104 Length=179 AvgMPG=26.5 _ERROR_=1 _N_=8
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A41.8T convertible 2dr Type=Sedan Origin=Europe DriveTrain=Front MSRP=$35,940 Invoice=. EngineSize=1.8 Cylinders=4
 Horsepower=170 MPG_City=23 MPG_Highway=30 Weight=3638 Wheelbase=105 Length=180 AvgMPG=26.5 _ERROR_=1 _N_=9
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A4 3.0 4dr Type=Sedan Origin=Europe DriveTrain=Front MSRP=$31,840 Invoice=. EngineSize=3 Cylinders=6 Horsepower=220
 MPG_City=20 MPG_Highway=28 Weight=3462 Wheelbase=104 Length=179 AvgMPG=24 _ERROR_=1 _N_=10
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A4 3.0 Quattro 4dr manual Type=Sedan Origin=Europe DriveTrain=All MSRP=$33,430 Invoice=. EngineSize=3 Cylinders=6
 Horsepower=220 MPG_City=17 MPG_Highway=26 Weight=3583 Wheelbase=104 Length=179 AvgMPG=21.5 _ERROR_=1 _N_=11
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A4 3.0 Quattro 4dr auto Type=Sedan Origin=Europe DriveTrain=All MSRP=$34,480 Invoice=. EngineSize=3 Cylinders=6
 Horsepower=220 MPG_City=18 MPG_Highway=25 Weight=3627 Wheelbase=104 Length=179 AvgMPG=21.5 _ERROR_=1 _N_=12
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A6 3.0 4dr Type=Sedan Origin=Europe DriveTrain=Front MSRP=$36,640 Invoice=. EngineSize=3 Cylinders=6 Horsepower=220
 MPG_City=20 MPG_Highway=27 Weight=3561 Wheelbase=109 Length=192 AvgMPG=23.5 _ERROR_=1 _N_=13
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A6 3.0 Quattro 4dr Type=Sedan Origin=Europe DriveTrain=All MSRP=$39,640 Invoice=. EngineSize=3 Cylinders=6
 Horsepower=220 MPG_City=18 MPG_Highway=25 Weight=3880 Wheelbase=109 Length=192 AvgMPG=21.5 _ERROR_=1 _N_=14
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A4 3.0 convertible 2dr Type=Sedan Origin=Europe DriveTrain=Front MSRP=$42,490 Invoice=. EngineSize=3 Cylinders=6
 Horsepower=220 MPG_City=20 MPG_Highway=27 Weight=3814 Wheelbase=105 Length=180 AvgMPG=23.5 _ERROR_=1 _N_=15
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A4 3.0 Quattro convertible 2dr Type=Sedan Origin=Europe DriveTrain=All MSRP=$44,240 Invoice=. EngineSize=3
 Cylinders=6 Horsepower=220 MPG_City=18 MPG_Highway=25 Weight=4013 Wheelbase=105 Length=180 AvgMPG=21.5 _ERROR_=1 _N_=16
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A6 2.7 Turbo Quattro 4dr Type=Sedan Origin=Europe DriveTrain=All MSRP=$42,840 Invoice=. EngineSize=2.7 Cylinders=6
 Horsepower=250 MPG_City=18 MPG_Highway=25 Weight=3836 Wheelbase=109 Length=192 AvgMPG=21.5 _ERROR_=1 _N_=17
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A6 4.2 Quattro 4dr Type=Sedan Origin=Europe DriveTrain=All MSRP=$49,690 Invoice=. EngineSize=4.2 Cylinders=8
 Horsepower=300 MPG_City=17 MPG_Highway=24 Weight=4024 Wheelbase=109 Length=193 AvgMPG=20.5 _ERROR_=1 _N_=18
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 Make=Audi Model=A8 L Quattro 4dr Type=Sedan Origin=Europe DriveTrain=All MSRP=$69,190 Invoice=. EngineSize=4.2 Cylinders=8
 Horsepower=330 MPG_City=17 MPG_Highway=24 Weight=4399 Wheelbase=121 Length=204 AvgMPG=20.5 _ERROR_=1 _N_=19
 NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19.
 WARNING: Limit set by ERRORS= option reached.  Further errors of this type will not be printed.
 Make=Audi Model=S4 Quattro 4dr Type=Sedan Origin=Europe DriveTrain=All MSRP=$48,040 Invoice=. EngineSize=4.2 Cylinders=8
 Horsepower=340 MPG_City=14 MPG_Highway=20 Weight=3825 Wheelbase=104 Length=179 AvgMPG=17 _ERROR_=1 _N_=20
 NOTE: There were 428 observations read from the data set SASHELP.CARS.
 NOTE: The data set WORK.CARS_UPDATE has 428 observations and 5 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       user cpu time       0.01 seconds
       system cpu time     0.00 seconds
       memory              895.03k
       OS Memory           30632.00k
       Timestamp           03.08.2022 08:25:40 пп
       Step Count                        231  Switch Count  2
       Page Faults                       0
       Page Reclaims                     151
       Page Swaps                        0
       Voluntary Context Switches        11
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           280
       
 
 90         
 91         proc means data=cars_update min mean max;
 92             var MSRP Invoice;
 93         run;
 
 NOTE: There were 428 observations read from the data set WORK.CARS_UPDATE.
 NOTE: PROCEDURE MEANS used (Total process time):
       real time           0.04 seconds
       user cpu time       0.03 seconds
       system cpu time     0.01 seconds
       memory              8555.15k
       OS Memory           37308.00k
       Timestamp           03.08.2022 08:25:40 пп
       Step Count                        232  Switch Count  1
       Page Faults                       0
       Page Reclaims                     1729
       Page Swaps                        0
       Voluntary Context Switches        17
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           8
       
 
 94         
 95         proc print data=cars_update;
 96             var Make Model MSRP Invoice AvgMPG;
 97         run;
 
 NOTE: There were 428 observations read from the data set WORK.CARS_UPDATE.
 NOTE: PROCEDURE PRINT used (Total process time):
       real time           0.66 seconds
       user cpu time       0.66 seconds
       system cpu time     0.00 seconds
       memory              4971.00k
       OS Memory           36008.00k
       Timestamp           03.08.2022 08:25:41 пп
       Step Count                        233  Switch Count  0
       Page Faults                       0
       Page Reclaims                     946
       Page Swaps                        0
       Voluntary Context Switches        0
       Involuntary Context Switches      1
       Block Input Operations            0
       Block Output Operations           352
       
 
 98         
 99         
 100        
 101        
 102        OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 114        

There is no much sense to me in the reference: "NOTE: Invalid numeric data, 'Invoice Price' , at line 88 column 19."

 

Thank you in advance for commenting and sharing your opinions.

 

 

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Quentin
Super User

Hi,

 

You have an accidental extra semicolon in your code:

 

 82         data cars_update;
 83             set sashelp.cars;
 84         keep Make Model MSRP Invoice AvgMPG;
 85         AvgMPG=mean(MPG_Highway, MPG_City);
 86         label MSRP="Manufacturer Suggested Retail Price"
 87                   AvgMPG="Average Miles per Gallon";        <--- this semicolon should not be here !
 88                   Invoice="Invoice Price";
 89         run;

That ends the label statement, and then line 88 in the log becomes an assignment statement.  It is trying to assign the character value "Invoice Price" to the numeric variable Invoice.

BASUG is hosting free webinars Next up: Don Henderson presenting on using hash functions (not hash tables!) to segment data on June 12. Register now at the Boston Area SAS Users Group event page: https://www.basug.org/events.

View solution in original post

5 REPLIES 5
Quentin
Super User

Hi,

 

You have an accidental extra semicolon in your code:

 

 82         data cars_update;
 83             set sashelp.cars;
 84         keep Make Model MSRP Invoice AvgMPG;
 85         AvgMPG=mean(MPG_Highway, MPG_City);
 86         label MSRP="Manufacturer Suggested Retail Price"
 87                   AvgMPG="Average Miles per Gallon";        <--- this semicolon should not be here !
 88                   Invoice="Invoice Price";
 89         run;

That ends the label statement, and then line 88 in the log becomes an assignment statement.  It is trying to assign the character value "Invoice Price" to the numeric variable Invoice.

BASUG is hosting free webinars Next up: Don Henderson presenting on using hash functions (not hash tables!) to segment data on June 12. Register now at the Boston Area SAS Users Group event page: https://www.basug.org/events.
ChrisRiddiough
SAS Employee

It's the pesky semi-colon on line 87:

87                   AvgMPG="Average Miles per Gallon";
88                   Invoice="Invoice Price";

Because of that SAS sees Invoice="Invoice Price"; as an assignment statement. 

Kurt_Bremser
Super User

You can avoid such mistakes by using a proper visual structure where statement and terminating semicolon are on the same column:

label
  MSRP="Manufacturer Suggested Retail Price"
  AvgMPG="Average Miles per Gallon"
  Invoice="Invoice Price"
;

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

LIBNAME 101

Follow along as SAS technical trainer Dominique Weatherspoon expertly answers all your questions about SAS Libraries.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 5 replies
  • 1607 views
  • 5 likes
  • 4 in conversation