BookmarkSubscribeRSS Feed
deleted_user
Not applicable
I have created a format using proc format. I applied the format to a variable in the data set. But the resultant data set is not displaying the entire contents of the field. It is truncating the value of the variable.
It is displaying only 10 characters in the field. proc format;
value $f_name
'Apple' = 'A'
'Banana' = 'B'
'grapes' = 'G'
'Mango' = 'M'
run;
data Fruit_frmt;
set sorted_Fruit;
format Fruit $f_name.;
run;

In the variable fruit where ever it does not have match in the proc format, it is truncating the display to 10 charecters. The field length of fruit is 50.
Please advise.
5 REPLIES 5
sbb
Lapis Lazuli | Level 10 sbb
Lapis Lazuli | Level 10
Share whatever SAS code you are using to display the variable. It will help a lot with determining the source of your situation.

Scott Barry
SBBWorks, Inc.
Flip
Fluorite | Level 6
If you do not use an attribute or length statement the new character variable will be set to the length of the first value encountered.
Patrick
Opal | Level 21
Hmmm! Even an attrib statement doesn't help.
I would have stepped into this trap as well.

Any suggestion how to get the "other" cases like "Passionfruit" in the output variable?


proc format;
value $f_name default= 40 max=40 min=40
"Apple" = "A"
"Banana" = "B"
"Grapes" = "G"
"Mango" = "M"
;
run;

data have;
length fruit $ 50;
fruit='Apple';
fruit2=fruit;
output;
fruit='Passionfruit';
fruit2=fruit;
output;
run;

data Fruit_frmt;
set have;
format fruit2 $f_name.;
attrib fruit3 length=$50.;
fruit3=put(fruit,$f_name.);
run;

proc print data=Fruit_frmt;
run;
sbb
Lapis Lazuli | Level 10 sbb
Lapis Lazuli | Level 10
When using the format-name in a FORMAT statement (or PUT function), specify a width attribute, as in $F_NAME50. to avoid the truncation.

Scott Barry
SBBWorks, Inc. Message was edited by: sbb
ArtC
Rhodochrosite | Level 12
When you specify the width on the format, be sure to specify it when the variable is created. In your case the FORMAT statement would need to come before the SET statement. The LENGTH statement would also do the trick.
[pre]data Fruit_frmt;
format Fruit $f_name50.;
*length fruit $50;
set sorted_Fruit;
run; [/pre]

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

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
  • 5 replies
  • 1609 views
  • 0 likes
  • 5 in conversation