BookmarkSubscribeRSS Feed
knveraraju91
Barite | Level 11

Hi I need your help in my code.

 

In my data (a1) two variables present.

variables:Cohortcd            events

                   2                        1

                   3                         1

                   5.2                      2

                   5.1                      1

                 Total                      5

 

Since it doesnot the cohortcd=1 and 4. I created a dataset (a2) with cohortcd=1 and 4 and events=0. 

eg:data a2;
input COHORTCD $ events;
datalines;
1 0
4 0
;

 

Using the program: I merged.

data a3;
set a1 a2;
run;

 

Then I perfpormed Proc transpose and calculted percentages with following code.

 

pct1=put(round(_1/1*100,1),5.1);
pct2=put(round(_2/1*100,1),5.1);
pct3=put(round(_3/1*100,1),5.1);
pct4=put(round(_4/1*100,1),5.1);
pct5=put(round(_5D2/2*100,1),5.1);
pct6=put(round(_5D1/1*100,1),5.1);
pct7=put(round(Total/5*100,1),5.1);

cnt_pct1=catx(' ',_1,('(' || put(pct1, 3.) || '%)'));
cnt_pct2=catx(' ',_2,('(' || put(pct2, 3.) || '%)'));
cnt_pct3=catx(' ',_3,('(' || put(pct3, 3.) || '%)'));
cnt_pct4=catx(' ',_4,('(' || put(pct4, 3.) || '%)'));
cnt_pct5=catx(' ',_5D2,('(' || put(pct5, 3.) || '%)'));
cnt_pct6=catx(' ',_5D1,('(' || put(pct6, 3.) || '%)'));
cnt_pct7=catx(' ',Total,('(' || put(pct7, 3.) || '%)'));
run;

 

After this using following code I ran proc report.

 

OPTIONS nodate nonumber;
ods listing close;
ods escapechar="^";
t
options orientation=landscape formchar="|----|+|---+=|-/\<>*";

ods rtf file="C:\Users\vvemireddy\Desktop\ae_1.rtf" style=journal;
proc report data=naefcst3 nowd headline headskip style(report)=[frame=void];
column grp aebodsys aetext cnt_pct1 cnt_pct2 cnt_pct3 cnt_pct4 ("5" "_______________" cnt_pct5 cnt_pct6) cnt_pct7;
define grp/order noprint;
define aebodsys/order noprint;

define aetext/ display 'Adverse Event' style(column)={asis=on cellspacing=.25pt just=left};
define cnt_pct1 / "1" style(column)={cellspacing=.25pt just=left};
define cnt_pct2/ "2" style(column)={cellspacing=.25pt just=left} ;
define cnt_pct3/ "3" style(column)={cellspacing=.25pt just=left};
define cnt_pct4/"4" style(column)={cellspacing=.25pt just=left} ;
define cnt_pct5/"5.2" style(column)={cellspacing=.25pt just=left};
define cnt_pct6/"5.1" style(column)={cellspacing=.25pt just=left} ;
define cnt_pct7/"Total" style(column)={cellspacing=.25pt just=left} ;
compute after grp/style={protectspecialchars=off};
n+1;
len=ifn(n=1,20,0);
dummy='\brdrt\brdrs';
line dummy $varying20. len;
endcomp;
run;
ods rtf close;

 

 

I am  getting expected results for the variables in the a1 dataset, but not for a2 dataset variables I added to a1 dataset. I am unable to attach the  proc report results in RTF format. I am going to show as best as I can what my issue is. In other formats I am getting expected results. But RTF format I am not getting expected results for the a2 variables (1 and 4) which I added to a1 Please check vaiable 1 and 4. Please help

Results in other format

 

Number of TEAEs

0 ( 0%)    1 (100%)     1 (100%)    0 ( 0%)         2 (100%)        1 (100%)         5 (100%)

 

Results in RTF format

 

Adverse Event

1

2

3

4

5.2

5.1

Total

Number of TEAEs

0 ( 

0%)

1 (100%)

1 (100%)

0 ( 

0%)

2 (100%)

1 (100%)

5 (100%)

6 REPLIES 6
Jagadishkatam
Amethyst | Level 16
Hi

could you please try to replace the below code

cnt_pct1=catx(' ',_1,('(' || put(pct1, 3.) || '%)'));
cnt_pct2=catx(' ',_2,('(' || put(pct2, 3.) || '%)'));
cnt_pct3=catx(' ',_3,('(' || put(pct3, 3.) || '%)'));
cnt_pct4=catx(' ',_4,('(' || put(pct4, 3.) || '%)'));
cnt_pct5=catx(' ',_5D2,('(' || put(pct5, 3.) || '%)'));
cnt_pct6=catx(' ',_5D1,('(' || put(pct6, 3.) || '%)'));
cnt_pct7=catx(' ',Total,('(' || put(pct7, 3.) || '%)'));

with

cnt_pct1=cat(_1,' (', put(pct1, 3.),'%)');
cnt_pct2=cat(_2,' (', put(pct2, 3.),'%)');
cnt_pct3=cat(_3,' (', put(pct3, 3.),'%)');
cnt_pct4=cat(_4,' (', put(pct4, 3.),'%)');
cnt_pct5=cat(_5D2,' (', put(pct5, 3.),'%)');
cnt_pct6=cat(_5D1,' (', put(pct6, 3.),'%)');
cnt_pct7=cat(Total,' (',put(pct7, 3.),'%)');

Please try and let me know if it helps.
Thanks,
Jag
knveraraju91
Barite | Level 11

Thank you for help. Your code still results in same output for variables 1 and 4 in RTF format as my code.

RW9
Diamond | Level 26 RW9
Diamond | Level 26

Oh, I see, you mean in your output RTF the text is being wrapped - makes sure you set a cokumn width that fits for each column:

define cnt_pct1 / "1" style(column)={cellwidth=3cm cellspacing=.25pt just=left};

                                                   ^                 ^

This should prevent the wrapping.  However all my questions still stand.

 

knveraraju91
Barite | Level 11

Thank you very much. That works. 

 

RW9
Diamond | Level 26 RW9
Diamond | Level 26

Sorry, there is a lot here which is not clear to me.  How do you start with a dataset of counts, is this some counting you have done previously - i.e. do those values actually equal 100% for each cohort?  Secondly, in  clinical outputs percentage is normally of the format 5.2.  If your assuming that they are a hundred, why not just create the string before transposing the data, saves re-typing all the code:

data have;
  input Cohortcd events;
  pct=cat(strip(put(events,best.)),' (',put(ifn(events=0,0,100),3.),'%)');
datalines;
1 0
2 1
3 1
4 0
5.2 2
5.1 1
;
run;
proc transpose data=have out=want;
  var pct;
  id cohortcd;
  idlabel cohortcd;
run;

Though I have to say, I don't see the point in this out at all, TAE's should be cohort down the page and treatment arm across the page, with the values being counts of TAEs within each treatment/cohort.  Percentage doesn't make any sense as you have neither littel or big N.  So you would have number of subjects with TAE as a number and percentage of number of sujects within population, but not individual TAE's.

Astounding
PROC Star

Since you are working with just a handful of observations, the easiest way to solve this is for you to do it.  Just print your data at each step along the way.  That will pinpoint the location where you begin to get unexpected results.

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

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
  • 6 replies
  • 1126 views
  • 1 like
  • 4 in conversation