Hello SAS Friends,
Using either SAS ver 9.4 or SAS Studio....
Is it possible to add highlights and font colors to a few key words within a text string, and not others within the same string?
The entire text string resides within a single variable column.
For example in this sentence would like to highlight "Mostly sunny" in yellow and "shower" in purple font.
" Mostly sunny, with a high near 79. chance of an afternoon shower, moderate Southwest wind." (This comments board wont allow for coloring text, I think, so they're just BOLDED).
Attached is an example of the text output wanted (Want_text)
A sample SAS dataset (w_1_s_3_tmp)
The Proc Report code used for the SAS dataset (W_Tmp)
proc report data = W_1_s_3_TMP /*headline*/ NOHEADER style(header)=[font_size=0] ;
Column Summary ;
define Summary / style(column)=[font_size=4.0 just=l cellwidth=6in /*cellheight=0.25in*/
borderrightcolor=white borderleftcolor=white bordertopcolor=white borderbottomcolor=white backgroundcolor=white] ;
run ;
I have not been able to find a way of doing this using SAS, and as a work around we've been exporting the Proc Report output as a HTML5 file, and editing by hand.
Thank you for your thoughts on how to do this all within SAS, it would save us allot of time!
R.
I have modified the data using a DATA step to add in-line formatting.
data w_1_s_3_tmp;
length summary $500;
set w_1_s_3_tmp;
format summary $500.;
informat summary $500.;
if index(strip(summary),'Mostly sunny') gt 0 then do;
summary=tranwrd(summary,'Mostly sunny','^S={background=yellow} Mostly sunny ^S={}');
end;
if index(summary,'shower') gt 0 then do;
summary=tranwrd(summary,'shower','^S={foreground=purple font_weight=bold} shower ^S={}');
end;
run;
ods escapechar='^';
ods listing close;
ods html5 path='c:\temp' file='test.html';
proc report data = W_1_s_3_TMP NOHEADER ;
Column Summary ;
define Summary /display style(column)=[font_size=4.0 just=l cellwidth=6in /*cellheight=0.25in*/
borderrightcolor=white borderleftcolor=white bordertopcolor=white borderbottomcolor=white
backgroundcolor=white] ;
run ;
ods _all_ close;
ods listing;
I have attached a picture of the output I get.
I have modified the data using a DATA step to add in-line formatting.
data w_1_s_3_tmp;
length summary $500;
set w_1_s_3_tmp;
format summary $500.;
informat summary $500.;
if index(strip(summary),'Mostly sunny') gt 0 then do;
summary=tranwrd(summary,'Mostly sunny','^S={background=yellow} Mostly sunny ^S={}');
end;
if index(summary,'shower') gt 0 then do;
summary=tranwrd(summary,'shower','^S={foreground=purple font_weight=bold} shower ^S={}');
end;
run;
ods escapechar='^';
ods listing close;
ods html5 path='c:\temp' file='test.html';
proc report data = W_1_s_3_TMP NOHEADER ;
Column Summary ;
define Summary /display style(column)=[font_size=4.0 just=l cellwidth=6in /*cellheight=0.25in*/
borderrightcolor=white borderleftcolor=white bordertopcolor=white borderbottomcolor=white
backgroundcolor=white] ;
run ;
ods _all_ close;
ods listing;
I have attached a picture of the output I get.
This is great ! Thank you Kathryn_SAS !
Here is the answer for the font color which works great. For Highlight, will just include that from the 'Styles' offering. Thanks:
data W_1_S_3_TMP ;
set DAT_1.W_1_S_3_TMP;
length Summ_1 $95 ;
Summ_1 = tranwrd(Summary,'Sunny','(*ESC*){style [fontweight=extra_bold color=yellow]Sunny}');
format Summ_1;
run;
proc report data = W_1_s_3_TMP /*headline*/ NOHEADER style(header)=[font_size=0] ;
Column Summ_1 ;
define Summ_1 / style(column)=[font_size=4.0 just=l cellwidth=6in /*cellheight=0.25in*/
borderrightcolor=white borderleftcolor=white bordertopcolor=white borderbottomcolor=white backgroundcolor=white] ;
run ;
Calling all data scientists and open-source enthusiasts! Want to solve real problems that impact your company or the world? Register to hack by August 31st!
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.
Ready to level-up your skills? Choose your own adventure.