BookmarkSubscribeRSS Feed
JUMMY
Obsidian | Level 7

 

I have a sas data (sas7bdat) of the form below:

 

1 0 336
1 0 346
0 1 269
0 1 346
1 0 323
1 0 309
0 1 322
0 1 316
1 0 300
1 0 309

 

How do I use proc format to edit the first two columns?

 

proc format;
  value fxx 1='High' 0='Low';
  value fxxxx 1='Yes' 0='No';
run;


libname info 'where data is stored';

data have;
	set info.have;
	input xx xxxx sbp;
	format xx fxx. xxxx fxxxx.;
	run;

proc print data=have;
run;

 

7    libname info 'where data is stored';
NOTE: Libref info was successfully assigned as follows:
      Engine:        V9
      Physical Name: where data is stored
8
9    data have;
10   *Use SET statement to set the permanent SAS data set;
11       set info.have;
ERROR: File INFO.HAVE.DATA does not exist.
12       input xx xxxx sbp;
13       format xx fxx. xxxx fxxxx.;
14       run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.HAVE may be incomplete.  When this step was stopped there were 0
         observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds


15
16   *Use PROC PRINT to read the data carefully;
17   proc print data=have;
NOTE: Writing HTML Body file: sashtml.htm
ERROR: File WORK.HAVE.DATA does not exist.
18   run;

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.58 seconds
      cpu time            0.09 seconds

I keep getting the same error above. I am trying to import the data from sas and then use proc format to make changes.

Why do I still have column 1 and 2 not formatted? What am I missing?

 

 

 

9 REPLIES 9
novinosrin
Tourmaline | Level 20

@JUMMY   Your code works

 


data have;
input var1-var3;
cards;
1 0 336
1 0 346
0 1 269
0 1 346
1 0 323
1 0 309
0 1 322
0 1 316
1 0 300
1 0 309
;

proc format;
  value fxx 1='High' 0='Low';
  value fxxxx 1='Yes' 0='No';
run;




data have;
	set have;
	format var1 fxx. var2 fxxxx.;
	run;
novinosrin
Tourmaline | Level 20

I think the error is your input statement which i removed

PaigeMiller
Diamond | Level 26

Are there errors in your SAS log? There are when I run this code.

 

 

--
Paige Miller
JUMMY
Obsidian | Level 7
7    libname info 'where data is stored';
NOTE: Libref info was successfully assigned as follows:
      Engine:        V9
      Physical Name: where data is stored
8
9    data have;
10   *Use SET statement to set the permanent SAS data set;
11       set info.have;
ERROR: File INFO.HAVE.DATA does not exist.
12       input xx xxxx sbp;
13       format xx fxx. xxxx fxxxx.;
14       run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.HAVE may be incomplete.  When this step was stopped there were 0
         observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds


15
16   *Use PROC PRINT to read the data carefully;
17   proc print data=have;
NOTE: Writing HTML Body file: sashtml.htm
ERROR: File WORK.HAVE.DATA does not exist.
18   run;

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.58 seconds
      cpu time            0.09 seconds

I keep getting the same error above. I am trying to import the data from sas and then use proc format to make changes.

PaigeMiller
Diamond | Level 26

 

 


@JUMMY wrote:
7    libname info 'where data is stored';
NOTE: Libref info was successfully assigned as follows:
      Engine:        V9
      Physical Name: where data is stored
8
9    data have;
10   *Use SET statement to set the permanent SAS data set;
11       set info.have;
ERROR: File INFO.HAVE.DATA does not exist.
12       input xx xxxx sbp;
13       format xx fxx. xxxx fxxxx.;
14       run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.HAVE may be incomplete.  When this step was stopped there were 0
         observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds

 



There is no such SAS data set named HAVE in library INFO. So you can't perform this DATA step. As mentioned by @novinosrin , you also can't have an INPUT statement in DATA HAVE

--
Paige Miller
JUMMY
Obsidian | Level 7
@PaigeMiller, I have taken the INPUT statement out. How do I create INFO in the library? What am I missing?
PaigeMiller
Diamond | Level 26

@JUMMY wrote:
@PaigeMiller, I have taken the INPUT statement out. How do I create INFO HAVE in the library? What am I missing?

The same way you create other data sets

 

data info.have;
    /* DATA step code goes here to create the data set */
run;

Of course, the related problem is: you should not be writing code to access a data set (INFO.HAVE) that does not exist. 

 

I strongly agree with @Kurt_Bremser that you need to take some time and learn basic programming concepts via the FREE online video he mentions.

--
Paige Miller
ballardw
Super User

@JUMMY wrote:
7    libname info 'where data is stored';
NOTE: Libref info was successfully assigned as follows:
      Engine:        V9
      Physical Name: where data is stored
8
9    data have;
10   *Use SET statement to set the permanent SAS data set;
11       set info.have;
ERROR: File INFO.HAVE.DATA does not exist.
12       input xx xxxx sbp;
13       format xx fxx. xxxx fxxxx.;
14       run;

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.HAVE may be incomplete.  When this step was stopped there were 0
         observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds


15
16   *Use PROC PRINT to read the data carefully;
17   proc print data=have;
NOTE: Writing HTML Body file: sashtml.htm
ERROR: File WORK.HAVE.DATA does not exist.
18   run;

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.58 seconds
      cpu time            0.09 seconds

I keep getting the same error above. I am trying to import the data from sas and then use proc format to make changes.


Have you created a LIBRARY named INFO? Yes.

Does the library contain a data set named HAVE??

 

Syntax of

set info.have;

basically means "read data from a data set named "have" in a library named "info".

If you have not created the library=> Error

if the library does not have a data set with that name=>

And the error will be "does not exist" in either case.

Kurt_Bremser
Super User

This

11       set info.have;
ERROR: File INFO.HAVE.DATA does not exist.

very clearly tells you that you NOT have a dataset called HAVE in library INFO.

 

The input statement reads from external data sources, not from SAS datasets. It is useless without a corresponding infile statement that defines access to that external data source.

 

So you do not have any problem with a format, but with the existence of datasets in the first place. From where do you infer that the dataset have should exist, or do you have non-SAS data that needs to be read into a dataset first?

 

I strongly suggest that you spend the time and work through the (free!) online SAS Programming 1 course, as that will allow you to avoid the simple mistakes you are currently fighting with.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 9 replies
  • 2867 views
  • 0 likes
  • 5 in conversation