BookmarkSubscribeRSS Feed
confooseddesi89
Quartz | Level 8

Hello,

 

I have some data with the number of hours of TV watching (Hours_Watching_Monthly) by program (Program). See data below:

Data DataforSAS;
Input Program :$9. Hours_Watching_Monthly;
datalines;
ProgramA	10.13
ProgramB	9.52
ProgramC	8.86
ProgramD	8.5
ProgramE	6.75
ProgramF	4.5
ProgramG	4.35
ProgramH	4.32
ProgramI	3.33
ProgramJ	2.93
ProgramK	2.26
ProgramL	0.95
;
run;

I've created a pie chart using the following code:

proc gchart data=DataforSAS;   
pie Program / sumvar=Hours_Watching_Monthly other=5 otherlabel='Other' levels=all clockwise 
value=none
slice=INSIDE
percent=INSIDE
coutline=black
noheading
ASCENDING plabel=(height=.8 font='Arial Black'); title 'Hours watching monthly by program';
run;
title;
run;

Here is the resulting pie chart:

confooseddesi89_0-1706222081938.png

 

(1) I would like to control the color of each individual slice of the pie chart, by the program name (e.g., ProgramA is blue; ProgramB is red). I can't find an easy solution online.

(2) Is there a way to make the percentages rounded to the nearest percentage point (e.g., 14% instead of 14.34%)?

 

Could someone assist? Thanks!

8 REPLIES 8
ballardw
Super User

For Proc Gchart you provide a PATTERN statement for each slice. The results of the Pattern1 statement are applied to the first grouping value used, Pattern2 the second and so on.

The basic syntax is

 

Pattern1 color=green;

Your pattern number order should match the order of the data.

 

It has been more than 25 years since I did GCHART Pie charts. The percentages calculated by the graphing options were almost always a pain to deal with so I always calculated the percentage I wanted to display and plotted that variable directly. Then I could control the format of the variable and actually knew what the denominator and numerators were.

 

 

PS: please look at your GCHART code and fix whatever cause all of the options to have NO space between them. Your code as posted will not run because of errors. Also you want to end GCHART with a QUIT; statement.

 

You may want to consider moving on to Proc SGPIE if using a recent version of SAS. The STYLATTRS option lets you provide a list of colors to use and the STATFMT= option allows you to specify the display format of the statistic such as percentages at run time. Note that the syntax changes quite a bit but is generally more flexible. For example there are DATTRMAP data sets that can be used in SGPIE, or SGPLOT or SGPANEL to provide consist colors for markers, lines or area fillcolors for a grouping variable such as your Program variable in multiple procedures by adding that and instructions to the plot code to use the group of values. (You can have multiple groups of appearance options in a single set so you need to tell the procedure which one to use for which part of graph).

confooseddesi89
Quartz | Level 8

Thanks; the code ran fine when I added the PATTERN statement, but none of the slice colors changed in the output.

proc gchart data=DataforSAS;   
pie Program / sumvar=Hours_Watching_Monthly other=5 otherlabel='Other' levels=all clockwise value=none slice=INSIDE percent=INSIDE coutline=black noheading ASCENDING 
plabel=(height=.8 font='Arial Black'); Pattern1 color=blue; 
title 'Hours watching monthly by program';run;title;run;quit;

I fixed the code - not sure why the spaces disappeared.

 

PROC SGPIE SAS is not available with my SAS version.

ballardw
Super User

See if this behaves differently:

Pattern1 color=darkblue; 
Pattern2 color=blue;
Pattern3 color=lightblue;
Pattern4 color=pink;
Pattern5 color=lightred;
Pattern6 color=red;

proc gchart data=DataforSAS;   
pie Program / sumvar=Hours_Watching_Monthly other=5 otherlabel='Other' levels=all clockwise value=none slice=INSIDE percent=INSIDE coutline=black noheading ASCENDING 
plabel=(height=.8 font='Arial Black');
title 'Hours watching monthly by program';run;title;run;quit;

The Pattern, Axis and Symbol statements are basically system settings and shared definitions in the different procedures. So typically they should be defined before the procedure(s) that need them.

 

 

confooseddesi89
Quartz | Level 8

Hello,

 

Thanks, that worked great for my small dataset - however, I tried the "pattern" statements with a larger dataset, and it did not work. It looks like maybe one slice changed to dark blue? See below code for the larger dataset and PROC GCHART:

Data DataforSAS2;
Input Program :$10. Hours_Watching_Monthly_rec;
datalines;
Program1	59
Program2	90
Program3	55
Program4	53
Program5	66
Program6	87
Program7	60
Program8	75
Program9	75
Program10	2.93
Program11	2.26
Program12	0.95
Program13	0.95
Program14	0.95
Program15	0.95
Program16	0.95
Program17	0.95
Program18	0.95
Program19	0.95
Program20	0.95
Program21	0.94
Program22	0.94
Program23	0.94
Program24	0.94
Program25	0.94
Program26	0.94
Program27	0.94
Program28	0.94
Program29	0.94
Program30	0.93
Program31	0.93
Program32	0.93
Program33	0.93
Program34	0.93
Program35	0.93
Program36	0.93
Program37	0.93
Program38	0.93
Program39	0.92
Program40	0.92
Program41	0.92
Program42	0.92
Program43	0.92
Program44	0.92
Program45	0.92
Program46	0.92
Program47	0.92
Program48	0.91
Program49	0.91
Program50	0.91
Program51	0.91
Program52	0.91
Program53	0.91
Program54	0.91
Program55	0.91
Program56	0.91
Program57	0.9
Program58	0.9
Program59	0.9
Program60	0.9
Program61	0.9
Program62	0.9
Program63	0.9
Program64	0.9
Program65	0.9
Program66	0.89
Program67	0.89
Program68	0.89
Program69	0.89
Program70	0.89
Program71	0.89
Program72	0.89
Program73	0.89
Program74	0.89
Program75	0.88
Program76	0.88
Program77	0.88
Program78	0.88
Program79	0.88
Program80	0.88
Program81	0.88
Program82	0.88
Program83	0.88
Program84	0.87
Program85	0.87
Program86	0.87
Program87	0.87
Program88	0.87
Program89	0.87
Program90	0.87
Program91	0.87
Program92	0.87
Program93	0.86
Program94	0.86
Program95	0.86
Program96	0.86
Program97	0.86
Program98	0.86
Program99	0.86
Program100	0.86
Program101	0.86
Program102	0.85
Program103	0.85
Program104	0.85
Program105	0.85
Program106	0.85
Program107	0.85
Program108	0.85
Program109	0.85
Program110	0.85
Program111	0.84
Program112	0.84
Program113	0.84
Program114	0.84
Program115	0.84
Program116	0.84
Program117	0.84
Program118	0.84
Program119	0.84
Program120	0.83
Program121	0.83
Program122	0.83
Program123	0.83
Program124	0.83
Program125	0.83
Program126	0.83
Program127	0.83
Program128	0.83
Program129	0.82
Program130	0.82
Program131	0.82
Program132	0.82
Program133	0.82
Program134	0.82
Program135	0.82
Program136	0.82
Program137	0.82
Program138	0.81
Program139	0.81
Program140	0.81
Program141	0.81
Program142	0.81
Program143	0.81
Program144	0.81
Program145	0.81
Program146	0.81
Program147	0.8
Program148	0.8
Program149	0.8
Program150	0.8
Program151	0.8
Program152	0.8
Program153	0.8
Program154	0.8
Program155	0.8
Program156	0.79
Program157	0.79
Program158	0.79
Program159	0.79
Program160	0.79
Program161	0.79
Program162	0.79
Program163	0.79
Program164	0.79
Program165	0.78
Program166	0.78
Program167	0.78
Program168	0.78
Program169	0.78
Program170	0.78
Program171	0.78
Program172	0.78
Program173	0.78
Program174	0.77
Program175	0.77
Program176	0.77
Program177	0.77
Program178	0.77
Program179	0.77
Program180	0.77
Program181	0.77
Program182	0.77
Program183	0.76
Program184	0.76
Program185	0.76
Program186	0.76
Program187	0.76
Program188	0.76
Program189	0.76
Program190	0.76
Program191	0.76
Program192	0.75
Program193	0.75
Program194	0.75
Program195	0.75
Program196	0.75
Program197	0.75
Program198	0.75
Program199	0.75
Program200	0.75
Program201	0.74
Program202	0.74
Program203	0.74
Program204	0.74
Program205	0.74
Program206	0.74
Program207	0.74
Program208	0.74
Program209	0.74
Program210	0.73
Program211	0.73
Program212	0.73
Program213	0.73
Program214	0.73
Program215	0.73
Program216	0.73
Program217	0.73
Program218	0.73
Program219	0.72
Program220	0.72
Program221	0.72
Program222	0.72
Program223	0.72
Program224	0.72
Program225	0.72
Program226	0.72
Program227	0.72
Program228	0.71
Program229	0.71
Program230	0.71
Program231	0.71
Program232	0.71
Program233	0.71
Program234	0.71
Program235	0.71
Program236	0.71
Program237	0.7
Program238	0.7
Program239	0.7
Program240	0.7
Program241	0.7
Program242	0.7
Program243	0.7
Program244	0.7
Program245	0.7
Program246	0.69
Program247	0.69
Program248	0.69
Program249	0.69
Program250	0.69
Program251	0.69
Program252	0.69
Program253	0.69
Program254	0.69
Program255	0.68
Program256	0.68
Program257	0.68
Program258	0.68
Program259	0.68
Program260	0.68
Program261	0.68
Program262	0.68
Program263	0.68
Program264	0.67
Program265	0.67
Program266	0.67
Program267	0.67
Program268	0.67
Program269	0.67
Program270	0.67
Program271	0.67
Program272	0.67
Program273	0.66
Program274	0.66
Program275	0.66
Program276	0.66
Program277	0.66
Program278	0.66
Program279	0.66
Program280	0.66
Program281	0.65
Program282	0.65
Program283	0.65
Program284	0.65
Program285	0.65
Program286	0.65
Program287	0.65
Program288	0.65
Program289	0.64
Program290	0.64
Program291	0.64
Program292	0.64
Program293	0.64
Program294	0.64
Program295	0.64
Program296	0.64
Program297	0.63
Program298	0.63
Program299	0.63
Program300	0.63
Program301	0.63
Program302	0.63
Program303	0.63
Program304	0.63
Program305	0.62
Program306	0.62
Program307	0.62
Program308	0.62
Program309	0.62
Program310	0.62
Program311	0.62
Program312	0.62
Program313	0.61
Program314	0.61
Program315	0.61
Program316	0.61
Program317	0.61
Program318	0.61
Program319	0.61
Program320	0.61
Program321	0.6
Program322	0.6
Program323	0.6
Program324	0.6
Program325	0.6
Program326	0.6
Program327	0.6
Program328	0.6
Program329	0.59
Program330	0.59
Program331	0.59
Program332	0.59
Program333	0.59
Program334	0.59
Program335	0.59
Program336	0.59
Program337	0.58
Program338	0.58
Program339	0.58
Program340	0.58
Program341	0.58
Program342	0.58
Program343	0.58
Program344	0.58
Program345	0.57
Program346	0.57
Program347	0.57
Program348	0.57
Program349	0.57
Program350	0.57
Program351	0.57
Program352	0.57
Program353	0.56
Program354	0.56
Program355	0.56
Program356	0.56
Program357	0.56
Program358	0.56
Program359	0.56
Program360	0.56
Program361	0.55
Program362	0.55
Program363	0.55
Program364	0.55
Program365	0.55
Program366	0.55
Program367	0.55
Program368	0.55
Program369	0.54
Program370	0.54
Program371	0.54
Program372	0.54
Program373	0.54
Program374	0.54
Program375	0.54
Program376	0.54
Program377	0.53
Program378	0.53
Program379	0.53
Program380	0.53
Program381	0.53
Program382	0.53
Program383	0.53
Program384	0.53
Program385	0.52
Program386	0.52
Program387	0.52
Program388	0.52
Program389	0.52
Program390	0.52
Program391	0.52
Program392	0.52
Program393	0.51
Program394	0.51
Program395	0.51
Program396	0.51
Program397	0.51
Program398	0.51
Program399	0.51
Program400	0.51
Program401	0.5
Program402	0.5
Program403	0.5
Program404	0.5
Program405	0.5
Program406	0.5
Program407	0.5
Program408	0.5
Program409	0.49
Program410	0.49
Program411	0.49
Program412	0.49
Program413	0.49
Program414	0.49
Program415	0.49
Program416	0.49
Program417	0.48
Program418	0.48
Program419	0.48
Program420	0.48
Program421	0.48
Program422	0.48
Program423	0.48
Program424	0.48
Program425	0.47
Program426	0.47
Program427	0.47
Program428	0.47
Program429	0.47
Program430	0.47
Program431	0.47
Program432	0.47
Program433	0.46
Program434	0.46
Program435	0.46
Program436	0.46
Program437	0.46
Program438	0.46
Program439	0.46
Program440	0.46
Program441	0.45
Program442	0.45
Program443	0.45
Program444	0.45
Program445	0.45
Program446	0.45
Program447	0.45
Program448	0.45
Program449	0.44
Program450	0.44
Program451	0.44
Program452	0.44
Program453	0.44
Program454	0.44
Program455	0.44
Program456	0.44
Program457	0.43
Program458	0.43
Program459	0.43
Program460	0.43
Program461	0.43
Program462	0.43
Program463	0.43
Program464	0.43
Program465	0.42
Program466	0.42
Program467	0.42
Program468	0.42
Program469	0.42
Program470	0.42
Program471	0.42
Program472	0.42
Program473	0.41
Program474	0.41
Program475	0.41
Program476	0.41
Program477	0.41
Program478	0.41
Program479	0.41
Program480	0.41
Program481	0.4
Program482	0.4
Program483	0.4
Program484	0.4
Program485	0.4
Program486	0.4
Program487	0.4
Program488	0.4
Program489	0.39
Program490	0.39
Program491	0.39
Program492	0.39
Program493	0.39
Program494	0.39
Program495	0.39
Program496	0.39
Program497	0.38
Program498	0.38
Program499	0.38
Program500	0.38
Program501	0.38
Program502	0.38
Program503	0.38
Program504	0.38
Program505	0.37
Program506	0.37
Program507	0.37
Program508	0.37
Program509	0.37
Program510	0.37
Program511	0.37
Program512	0.37
Program513	0.36
Program514	0.36
Program515	0.36
Program516	0.36
Program517	0.36
Program518	0.36
Program519	0.36
Program520	0.36
Program521	0.35
Program522	0.35
Program523	0.35
Program524	0.35
Program525	0.35
Program526	0.35
Program527	0.35
Program528	0.35
Program529	0.34
Program530	0.34
Program531	0.34
Program532	0.34
Program533	0.34
Program534	0.34
Program535	0.34
Program536	0.34
Program537	0.33
Program538	0.33
Program539	0.33
Program540	0.33
Program541	0.33
Program542	0.33
Program543	0.33
Program544	0.33
Program545	0.32
Program546	0.32
Program547	0.32
Program548	0.32
Program549	0.32
Program550	0.32
Program551	0.32
Program552	0.32
Program553	0.31
Program554	0.31
Program555	0.31
Program556	0.31
Program557	0.31
Program558	0.31
Program559	0.31
Program560	0.31
Program561	0.3
Program562	0.3
Program563	0.3
Program564	0.3
Program565	0.3
Program566	0.3
Program567	0.3
Program568	0.3
Program569	0.29
Program570	0.29
Program571	0.29
Program572	0.29
Program573	0.29
Program574	0.29
Program575	0.29
Program576	0.29
Program577	0.28
Program578	0.28
Program579	0.28
Program580	0.28
Program581	0.28
Program582	0.28
Program583	0.28
Program584	0.28
Program585	0.27
Program586	0.27
Program587	0.27
Program588	0.27
Program589	0.27
Program590	0.27
Program591	0.27
Program592	0.27
Program593	0.26
Program594	0.26
Program595	0.26
Program596	0.26
Program597	0.26
Program598	0.26
Program599	0.26
Program600	0.26
Program601	0.25
Program602	0.25
Program603	0.25
Program604	0.25
Program605	0.25
Program606	0.25
Program607	0.25
Program608	0.25
Program609	0.24
Program610	0.24
Program611	0.24
Program612	0.24
Program613	0.24
Program614	0.24
Program615	0.24
Program616	0.24
Program617	0.23
Program618	0.23
Program619	0.23
Program620	0.23
Program621	0.23
Program622	0.23
Program623	0.23
Program624	0.23
Program625	0.22
Program626	0.22
Program627	0.22
Program628	0.22
Program629	0.22
Program630	0.22
Program631	0.22
Program632	0.22
Program633	0.21
Program634	0.21
Program635	0.21
Program636	0.21
Program637	0.21
Program638	0.21
Program639	0.21
Program640	0.21
Program641	0.2
Program642	0.2
Program643	0.2
Program644	0.2
Program645	0.2
Program646	0.2
Program647	0.2
Program648	0.2
Program649	0.19
Program650	0.19
Program651	0.19
Program652	0.19
Program653	0.19
Program654	0.19
Program655	0.19
Program656	0.19
Program657	0.18
Program658	0.18
Program659	0.18
Program660	0.18
Program661	0.18
Program662	0.18
Program663	0.18
Program664	0.18
Program665	0.17
Program666	0.17
Program667	0.17
Program668	0.17
Program669	0.17
Program670	0.17
Program671	0.17
Program672	0.17
Program673	0.16
Program674	0.16
Program675	0.16
Program676	0.16
Program677	0.16
Program678	0.16
Program679	0.16
Program680	0.16
Program681	0.15
Program682	0.15
Program683	0.15
Program684	0.15
Program685	0.15
Program686	0.15
Program687	0.15
Program688	0.15
Program689	0.14
Program690	0.14
Program691	0.14
Program692	0.14
Program693	0.14
Program694	0.14
Program695	0.14
Program696	0.14
Program697	0.13
Program698	0.13
Program699	0.13
Program700	0.13
Program701	0.13
Program702	0.13
Program703	0.13
Program704	0.13
Program705	0.12
Program706	0.12
Program707	0.12
Program708	0.12
Program709	0.12
Program710	0.12
Program711	0.12
Program712	0.12
Program713	0.11
Program714	0.11
Program715	0.11
Program716	0.11
Program717	0.11
Program718	0.11
Program719	0.11
Program720	0.11
Program721	0.1
Program722	0.1
Program723	0.1
Program724	0.1
Program725	0.1
Program726	0.1
Program727	0.1
Program728	0.1
Program729	0.09
Program730	0.09
Program731	0.09
Program732	0.09
Program733	0.09
Program734	0.09
Program735	0.09
Program736	0.09
Program737	0.08
Program738	0.08
Program739	0.08
Program740	0.08
Program741	0.08
Program742	0.08
Program743	0.08
Program744	0.08
Program745	0.07
Program746	0.07
Program747	0.07
Program748	0.07
Program749	0.07
Program750	0.07
Program751	0.07
Program752	0.07
Program753	0.06
Program754	0.06
Program755	0.06
Program756	0.06
Program757	0.06
Program758	0.06
Program759	0.06
Program760	0.06
Program761	0.05
Program762	0.05
Program763	0.05
Program764	0.05
Program765	0.05
Program766	0.05
Program767	0.05
Program768	0.05
Program769	0.04
Program770	0.04
Program771	0.04
Program772	0.04
Program773	0.04
Program774	0.04
Program775	0.04
Program776	0.04
Program777	0.03
Program778	0.03
Program779	0.03
Program780	0.03
Program781	0.03
Program782	0.03
Program783	0.03
Program784	0.03
Program785	0.02
Program786	0.02
Program787	0.02
Program788	0.02
Program789	0.02
Program790	0.02
Program791	0.02
Program792	0.02
Program793	0.01
Program794	0.01
Program795	0.01
Program796	0.01
Program797	0.01
Program798	0.01
Program799	0.01
Program800	0.01
;
run;
  Pattern1 color=darkblue; 
Pattern2 color=blue;
Pattern3 color=lightblue;
Pattern4 color=pink;
Pattern5 color=lightred;
Pattern6 color=red;

proc gchart data=DataforSAS2;   
  pie Program / sumvar=Hours_Watching_Monthly_rec
 other=5 otherlabel='Other' levels=all clockwise value=none slice=INSIDE percent=INSIDE coutline=black noheading ASCENDING
plabel=(height=.8 font='Arial Black');
title 'Hours watching monthly by program';run;

The produced graph is below:

confooseddesi89_0-1706387672611.png

 

Can you help out with this? Interestingly, when I try the code "Pattern color=blue repeat=500;" I get a pie chart where all of the slices are blue . . . the problem, of course, is that I need a difference color for each slice!

 

Thank you again.

ballardw
Super User

You want a Pattern for each value of Program.

Otherwise when the patterns you define run out then the default list is used for the remainder which could result in duplication of colors.

 

And there is a limit of 255 Pattern definitions.

 

There is no way I would ever attempt to make a PIE with 700 different slices. Pie charts are bad enough for misleading with only  a few categories as it is very difficult to clearly see which has more area when the values are close. If you make a "pie" that physically three feet across you might actually have enough space to see the slices (without colors).

Why do you think you need  a different color for each slice? This is basically useless for interpretation. Not mention that you need to have enough legend space to show what each color means in terms of the Program value.

 

As for why when you tried Repeat=500. From the online help:

REPEAT=number-of-times

specifies the number of times that a PATTERN definition is applied before the next PATTERN definition is used.

The behavior of the REPEAT= option depends on the color specification:
  • If you use both the COLOR= and REPEAT= options in a PATTERN statement, the pattern is repeated the specified number of times in the specified color. The fill can be either the default solid or a fill specified with the VALUE= option.

The highlighted text tells you what happened. It applied "blue" 500 times before attempting the next.

 

When creating a graph you should clearly decide what the graph is supposed to communicate to people. Which is one reason that except for small numbers of categories that pie charts are not in favor. Worse, if the values a close together it is hard to tell which is largest because of the way  that human eyes work.

So, what is this graph supposed to tell someone when the look at it?

 

If I needed to graph 700+ values with some sort of area like appearance I would probably go to SGPLOT with a NEEDLE statement with options to control the xaxis so text is readable (700+ categories gets to be crowded for most things). If my goal was to bring attention to the larger vs smaller values I would sort the data into a desired order then plot that. Example:

Data DataforSAS2;
Input Program :$10. Hours_Watching_Monthly_rec;
datalines;
Program1	59
Program2	90
Program3	55
Program4	53
Program5	66
Program6	87
Program7	60
Program8	75
Program9	75
Program10	2.93
Program11	2.26
Program12	0.95
;
proc sort data=dataforsas2;
   by descending hours_watching_monthly_rec;
run;

proc sgplot data=dataforSAS2;
   needle x=program y=Hours_Watching_Monthly_rec ;
run;

 

 

 

 

 

confooseddesi89
Quartz | Level 8

The NEEDLE plot is not useful for my purposes. The pie chart I requested is what I need to effectively convey my study's messages.

 

Of course, I do not want to plot 700+ programs on one pie chart. This is why the "other=5 otherlabel='Other'" statement is clearly indicated in the PROC GCHART code I posted. The programs that are ≥5% are the only ones that should be represented in separate slices (along with the "Other" slice), and each of these slices should be different colors. Each slice color should be specified, as I need to produce two pie charts by two different groups, and having (for example) Program1 be blue in both charts would help the reader identify the programs as the same.

 

If this request cannot be accomplished, or you do not know the answer, please simply state so.

ballardw
Super User

Because of the way GCHART works  to get the same colors for some "group" in multiple graphs YOU will have to control the order of data to match the pattern assignments because the Pattern1 definition goes to the "first" slice created. So you may to modify other choices in your code to allow that. The MIDPOINTS statement is one way to do that and you would provide the Program values for the order.

 

 

There are reasons in the underlying code for Gchart that basically there have been no updates in nearly 20 years. And the limited update was using the active ODS style colors by default.

Cynthia_sas
SAS Super FREQ

Hi:

  The good news is that any independent user can set up a SAS OnDemand for Academics account, which would give you access to both PROC SGPIE and PROC GCHART. That way you could compare the output. So, even if you do not have access to PROC SGPIE through your work or school account, you can set up a SAS OnDemand account for non-commercial learning purposes. PROC SGPIE was first available in SAS 9.4 Maintenance release 6, which is several years old now.

  The syntax for PROC SGPIE would turn out to be something like this (untested):

title "SGPIE Hours Watching Monthly";
proc sgpie data=work.DataforSAS2;
  pie Program / response=Hours_Watching_Monthly_rec  datalabeldisplay=(category percent) datalabelloc=inside
      direction=clockwise otherpercent=5 sliceorder=unformatted;
run;
title;

You could play with using STYLEATTRS or play with using an attibute table.

You can set up a SAS OnDemand account by going to https://welcome.oda.sas.com and sign in with your SAS Profile. The first time you register for an account, you would need to specify a geographic region.

Cynthia

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

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.

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
  • 8 replies
  • 655 views
  • 0 likes
  • 3 in conversation