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.);
⏰
Today is the last day to save with the early bird rate! Register today for just $695 - $100 off the standard rate.
Plus, pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.