DATA Step, Macro, Functions and more

Read Money as numeric

Reply
Contributor
Posts: 22

Read Money as numeric

I am trying to change the format of column Gross, which contains values like $50,319,942. I wish to make my program treat this variable as numeric. 

 

This is my code but it is not displaying the values of this column. 

 

DATA movies;
INFILE "/folders/myfolders/GrossDays.txt" DLM='09'x MISSOVER FIRSTOBS=2 DSD;
INPUT Title :$100. Date :ANYDTDTE20. Gross Theaters Distributor $;
RUN;

PROC PRINT DATA=movies;
FORMAT Date DATE9.;
RUN;

PROC PRINT DATA = music;
FORMAT Date DATE. ;
FORMAT Gross 10. ;
RUN;

DATA movies;
SET movies;
TheaterAvg = (Gross/Theaters);
RUN;

PROC PRINT DATA = movies;
RUN;

 

Super User
Posts: 8,216

Re: Read Money as numeric

You just need to add an informat when inputting gross. e.g.:

 

DATA movies;
  INFILE "/folders/myfolders/GrossDays.txt" DLM='09'x MISSOVER FIRSTOBS=2 DSD;
  INPUT Title :$100. Date :ANYDTDTE20. Gross dollar12. Theaters Distributor $;
RUN;

Art, CEO, AnalystFinder.com

Super User
Super User
Posts: 8,279

Re: Read Money as numeric

[ Edited ]

Make sure to include the : prefix so that it uses list mode input since the source file is delimited and not fixed columns.

  INPUT Title :$100. Date :ANYDTDTE. Gross :dollar. Theaters Distributor :$20.;

You don't need widths on your INFORMATs when using list mode, SAS will ignore them.

But you do want to include the width in the $xx. informats since that way SAS can use the width the make a better guess at what length you want the character variables to use.

Super User
Posts: 8,216

Re: Read Money as numeric

@Tom: It works, in this case, with or without the : for gross as long as one includes the dollar. informat

@Miah: One additional problem with your code:

PROC PRINT DATA = music;
	FORMAT Date DATE. ;
	FORMAT Gross 10. ;
RUN;

Shouldn't that have been data = movies ?

 

Art, CEO, AnalystFinder.com

 

Ask a Question
Discussion stats
  • 3 replies
  • 126 views
  • 0 likes
  • 3 in conversation