BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
harshpatel
Quartz | Level 8

Hi All,

I have a table properties as below in which i want to keep label name same as column name

Please help me on this

harshpatel_0-1608038256659.png

Thanks,

Harsh

 

1 ACCEPTED SOLUTION

Accepted Solutions
Ksharp
Super User

Then remove all the label from table .

 

data have;
 set sashelp.class;
run;


proc datasets library=work nolist nodetails;
modify have;
attrib _all_ label=' ';
quit;

View solution in original post

9 REPLIES 9
PeterClemmensen
Tourmaline | Level 20

Why not just delete all labels then ?

harshpatel
Quartz | Level 8

Thanks,

But if i am generating proc report then it is taking label instead of columns so what to do in this case,

my code is as below:

 

proc report data=test;
column idd description &names;
define idd/'id';
define description/'desc';
&defines;
run;

Ksharp
Super User

Then remove all the label from table .

 

data have;
 set sashelp.class;
run;


proc datasets library=work nolist nodetails;
modify have;
attrib _all_ label=' ';
quit;
harshpatel
Quartz | Level 8
Thanks,
It works for me
Kurt_Bremser
Super User

Transpose to a long dataset layout, and use _NAME_ as ACROSS variable in PROC REPORT.

See Maxim 19 and Maxim 33.

 

PS still better:

Convert _LABEL_ to a SAS date value (INPUT with YYMMN6.), use that as ACROSS, with a format to your liking.

Aku
Obsidian | Level 7 Aku
Obsidian | Level 7

With dictionary tables and call execute it's quite simply:

 

data HAVE;
attrib AUG12 label='201208' length=8
SEP12 label='201209' length=8
OCT12 label='201210' length=8
NOV12 label='201211' length=8
DEC12 label='201212' length=8
JAN13 label='201301' length=8
FEB13 label='201302' length=8
MAR13 label='201303' length=8
APR13 label='201304' length=8
MAY13 label='201305' length=8
JUN13 label='201306' length=8
JUL13 label='201307' length=8
AUG13 label='201308' length=8 ;
run;

proc sql;
create table Have_Cols as
select memname,
name,
label
from dictionary.columns
where memname = 'HAVE'
;
quit;

data _null_;
set Have_cols end=EOF;
if _N_ = 1 then call execute ('data Have2; set Have;');
call execute ('Attrib '||name||' label="'||name||' ');
if EOF then call execute('; run;');
run;

harshpatel
Quartz | Level 8
Thanks,
Great it works for me
harshpatel
Quartz | Level 8
Thanks,
Will do that
Kurt_Bremser
Super User

A simple example:

data wide;
input id $ aug12 sep12 oct12;
label
  aug12 = "201208"
  sep12 = "201209"
  oct12 = "201210"
;
datalines;
A 1 2 3
;

proc transpose data=wide out=trans (rename=(col1=value));
by id;
var aug12--oct12;
run;

data long;
set trans;
period = input(_label_,yymmn6.);
format period monyy5.;
drop _name_ _label_;
run;

With this vastly improved dataset layout, the code is now very simple:

proc report data=long;
column id value,period;
define id / group;
define value / "" analysis;
define period / "" across order=data;
run;

Result:

id	AUG12	SEP12	OCT12
A	1	2	3

By changing the format for the ACROSS variable in PROC REPORT, you can get anything you like, without having to resort to macro programming or CALL EXECUTE steps.

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 9 replies
  • 2219 views
  • 0 likes
  • 5 in conversation