turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- SAS Programming
- /
- SAS/GRAPH and ODS Graphics
- /
- Rename name of column to certain number

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-11-2016 09:05 PM

Hi,

I am doing project about glucose levels after meal.

i transposed matrix

```
DATA glucose1;
set missqlucose (firstobs = 1 obs = 6);
run;
PROC TRANSPOSE data=glucose1 out=gtrans1 name=time prefix=p;
VAR g1-g10;
run;
PROC PRINT DATA= gtrans1;
run;
```

and i got that table

So, here p1....p6 different lines on graph, where g1-g10 is X-axis and values in table is Y-axis.

Example for p1-line x=g1, y=4.90.

Moreovere, I need change g1....g10 to certain number(time):

g1=-15;

g2=0;

g3=30;

g4=60;

g5=90;

g6=120;

g7=180;

g8=240;

g9=300;

g10=360;

So when i tried plot graph

```
PROC GPLOT DATA = gtrans2;
TITLE 'Figure1 Glucose level after 10:00a.m';
PLOT
p1*time=3
p2*time=3
p3*time=3
p4*time=3
p5*time=3
p6*time=3
/overlay frame
haxis=-15 to 400
vaxis= 3 to 10 by 1
vref=0
lhref=25;
run;
```

And i got this

So, question: How rename g1...g10 to time(certain numbers) and plot the graph for that numbers?

Accepted Solutions

Solution

05-12-2016
12:03 AM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-11-2016 11:38 PM

READ THE LOG.

It looks like you reused a variable that already existed - Time - which looks like it was a character. Do you have a note in your log about conversion from numeric to character or something of the sort?

Since Time is still character it's not sorting numerically.

Create a new variable, TIME2, that is numeric and use that variable in your graphing procedure instead.

Also, you should use if/else if instead of multiple if's. It helps to speed it up, since as soon as one condition is met it stops checking th rest.

```
DATA gtrans2;
SET gtrans1;
IF (time='g1' ) THEN time2 = -15;
else IF (time='g2' ) THEN time2 = 0;
else IF (time='g3' ) THEN time2 = 30;
*rest of code follows similar format;
run;
```

All Replies

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-11-2016 10:07 PM

Since your time intervals aren't equal you can't apply a format, you need to recode the values. You can recode either via if/then, select, or the input function with a custom format.

I would suggest an if/then or a select if your just learning SAS.

Here's some examples of recording using if/then

http://www.ats.ucla.edu/stat/sas/modules/vars.htm

And here's an example of Select (and another if/then)

http://www.ats.ucla.edu/stat/sas/library/SASTranMan_os.html#SELECT%20case%20distinction

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-11-2016 10:40 PM

I use your recomendations

```
DATA gtrans2;
SET gtrans1;
IF (time='g1' ) THEN time = -15;
IF (time='g2' ) THEN time = 0;
IF (time='g3' ) THEN time = 30;
IF (time='g4' ) THEN time = 60;
IF (time='g5' ) THEN time = 90;
IF (time='g6' ) THEN time = 120;
IF (time='g7' ) THEN time = 180;
IF (time='g8' ) THEN time = 240;
IF (time='g9' ) THEN time = 300;
IF (time='g10') THEN time = 360;
run;
```

but now, when i use gplot

```
PROC GPLOT DATA = gtrans2 sort by time;
TITLE 'Figure1 Glucose level after 10:00a.m';
PLOT
p1*time=3
p2*time=3
p3*time=3
p4*time=3
p5*time=3
p6*time=3
/overlay frame
haxis=-15 to 400 by 15
vaxis= 3 to 10 by 1
vref=0
lhref=25;
run;
```

i got this;

so, i got following problems:

1) They have same length interval (but should be different

2) not sorted

3) i need interval 15, so: -15 0 15 30 45 ......Although i have for -15, 0, but no data for 15, 'cause next one is 30. So line should be from 0 to 30

Thank you

Solution

05-12-2016
12:03 AM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-11-2016 11:38 PM

READ THE LOG.

It looks like you reused a variable that already existed - Time - which looks like it was a character. Do you have a note in your log about conversion from numeric to character or something of the sort?

Since Time is still character it's not sorting numerically.

Create a new variable, TIME2, that is numeric and use that variable in your graphing procedure instead.

Also, you should use if/else if instead of multiple if's. It helps to speed it up, since as soon as one condition is met it stops checking th rest.

```
DATA gtrans2;
SET gtrans1;
IF (time='g1' ) THEN time2 = -15;
else IF (time='g2' ) THEN time2 = 0;
else IF (time='g3' ) THEN time2 = 30;
*rest of code follows similar format;
run;
```

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-12-2016 12:04 AM

Thank you. It works!!!!