Hi All,
The formatted values were gettng truncated to a length of 20, when the data have the values which were not covered in below expected values.
Ex: Raw data: "Once every 6 months in 2 cycles 15 days apart", which is not present in the proc format.
Formatted value: "Once every 6 months" instead of full length value.
Could you please help on this.
PROC FORMAT LIBRARY=work;
Value $CMFREQ
"1" = "BID"
"2" = "TID"
"3" = "QID"
"4" = "QD"
"5" = "QM"
"6" = "PRN"
"7" = "Twice in the morning"
"8" = "Twice in the evening"
"9" = "Before meals"
"Q 6 months"= "Q6M"
;
run;
data cm;
length cmfreq $100.;
set raw.cm;
where cmfreqot ne '';
cmfreq = put(cmfreqot, $CMFREQ.);
keep cmfreqot cmfreq;
run;
Thank you
Yes, tricky one. Had to think about it for a while. Simplest way is to put other= and specify the format:
proc format library=work; value $cmfreq "1" = "BID" "2" = "TID" "3" = "QID" other=[$100.] ; run; data cm; length cmfreq cmfreqtot $100.; infile datalines dlm="¬" missover; input cmfreqtot $; cmfreq=put(cmfreqtot, $CMFREQ.); datalines; 3 A really long string which should push the twenty character bounds ; run;
Yes, tricky one. Had to think about it for a while. Simplest way is to put other= and specify the format:
proc format library=work; value $cmfreq "1" = "BID" "2" = "TID" "3" = "QID" other=[$100.] ; run; data cm; length cmfreq cmfreqtot $100.; infile datalines dlm="¬" missover; input cmfreqtot $; cmfreq=put(cmfreqtot, $CMFREQ.); datalines; 3 A really long string which should push the twenty character bounds ; run;
Many Thanks for your swift response. Issue solved now.
Much appreicated.
Hi
Another way would be, to specify the default length for the format. See sample below.
proc format library=work;
value $cmfreq (default=100)
"1" = "BID"
"2" = "TID"
"3" = "QID"
;
run;
data cm;
infile datalines dlm="¬" truncover;
input cmfreqtot $100.;
cmfreq=put(cmfreqtot, $CMFREQ.);
datalines;
3
2
1
A really long string which should push the twenty character bounds
abc
;
Bruno
You can define a default width when you define the format.
PROC FORMAT LIBRARY=work;
value $CMFREQ (default=100)
"1" = "BID"
"2" = "TID"
"3" = "QID"
"4" = "QD"
"5" = "QM"
"6" = "PRN"
"7" = "Twice in the morning"
"8" = "Twice in the evening"
"9" = "Before meals"
"Q 6 months"= "Q6M"
;
run;
Or you can specify the width when you use the format.
cmfreq = put(cmfreqot, $CMFREQ100.);
Thank you Jagadish
cmfreq = put(cmfreqot, $CMFREQ100.);
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
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.