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

Hello experts! I need to use an array to make my data table, but for some reason the data in the last column isn't being output. Here is the directions for my problem:

Patients underwent knee replacement surgeries for one or both knees. The data record patient id, the replaced knee number (1 or 2), and satisfaction scores pre-operatively, one day, one week, and one month after the surgery. The data are

 
 

Patient         Knee       Score     Score at     Score at     Score at

   ID       Number   Pre-op   one day     one week   one month

   01          1              0            5              7                10

   02          1              0            10              15               15

   02          2              3             5              8                10

   03          1             0             3               3                   3

   03          2             0             6               9                   9

   04          1             0             4              10                10

 

 

(a) Use the ARRAY statement to create a data set containing satisfaction scores for knee 1.

(b) Use the ARRAY statement to create a data set containing satisfaction scores for knee 2.

(c) Use the MERGE statement to create the merged file

 

Here is my code for part a:

data exercise3;
 input ID $ KneeNumber PreOp OneDay OneWeek OneMonth;
cards;
01 1 0  5  7  10
02 1 0 10 15  15
02 2 3  5  8  10
03 1 0  3  3   3
03 2 0  6  9   9
04 1 0  4 10  10
;
data A (keep=id visit score);
 set exercise3;
 array x{4} preop day1 week1 month1;
   do i=1 to 4;
   visit = i;
   score = x{i};
   if kneenumber = 1;
     output;
     end;
run;
proc print noobs;
run;

 

And this is my output:

ID    visit    score
                                       01      1        0
                                       01      2        .
                                       01      3        .
                                       01      4        .
                                       02      1        0
                                       02      2        .
                                       02      3        .
                                       02      4        .
                                       03      1        0
                                       03      2        .
                                       03      3        .
                                       03      4        .
                                       04      1        0
                                       04      2        .
                                       04      3        .
                                       04      4        .
 I'm not sure what I'm doing wrong, please help!!!
1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

@user1942 wrote:

Hello experts! I need to use an array to make my data table, but for some reason the data in the last column isn't being output. Here is the directions for my problem:

Patients underwent knee replacement surgeries for one or both knees. The data record patient id, the replaced knee number (1 or 2), and satisfaction scores pre-operatively, one day, one week, and one month after the surgery. The data are

 
 

Patient         Knee       Score     Score at     Score at     Score at

   ID       Number   Pre-op   one day     one week   one month

   01          1              0            5              7                10

   02          1              0            10              15               15

   02          2              3             5              8                10

   03          1             0             3               3                   3

   03          2             0             6               9                   9

   04          1             0             4              10                10

 

 

(a) Use the ARRAY statement to create a data set containing satisfaction scores for knee 1.

(b) Use the ARRAY statement to create a data set containing satisfaction scores for knee 2.

(c) Use the MERGE statement to create the merged file

 

Here is my code for part a:

data exercise3;
 input ID $ KneeNumber PreOp OneDay OneWeek OneMonth;
cards;
01 1 0  5  7  10
02 1 0 10 15  15
02 2 3  5  8  10
03 1 0  3  3   3
03 2 0  6  9   9
04 1 0  4 10  10
;
data A (keep=id visit score);
 set exercise3;
 array x{4} preop day1 week1 month1;
   do i=1 to 4;
   visit = i;
   score = x{i};
   if kneenumber = 1;
     output;
     end;
run;
proc print noobs;
run;

 

And this is my output:

ID    visit    score
                                       01      1        0
                                       01      2        .
                                       01      3        .
                                       01      4        .
                                       02      1        0
                                       02      2        .
                                       02      3        .
                                       02      4        .
                                       03      1        0
                                       03      2        .
                                       03      3        .
                                       03      4        .
                                       04      1        0
                                       04      2        .
                                       04      3        .
                                       04      4        .
 I'm not sure what I'm doing wrong, please help!!!

Please closely examine the names of the variables highlighted.

 

An array statement will create new variables if the name referenced on the array statement does not already exist.

 

You used three variable names on the array statement that were not already in the input data set.

View solution in original post

1 REPLY 1
ballardw
Super User

@user1942 wrote:

Hello experts! I need to use an array to make my data table, but for some reason the data in the last column isn't being output. Here is the directions for my problem:

Patients underwent knee replacement surgeries for one or both knees. The data record patient id, the replaced knee number (1 or 2), and satisfaction scores pre-operatively, one day, one week, and one month after the surgery. The data are

 
 

Patient         Knee       Score     Score at     Score at     Score at

   ID       Number   Pre-op   one day     one week   one month

   01          1              0            5              7                10

   02          1              0            10              15               15

   02          2              3             5              8                10

   03          1             0             3               3                   3

   03          2             0             6               9                   9

   04          1             0             4              10                10

 

 

(a) Use the ARRAY statement to create a data set containing satisfaction scores for knee 1.

(b) Use the ARRAY statement to create a data set containing satisfaction scores for knee 2.

(c) Use the MERGE statement to create the merged file

 

Here is my code for part a:

data exercise3;
 input ID $ KneeNumber PreOp OneDay OneWeek OneMonth;
cards;
01 1 0  5  7  10
02 1 0 10 15  15
02 2 3  5  8  10
03 1 0  3  3   3
03 2 0  6  9   9
04 1 0  4 10  10
;
data A (keep=id visit score);
 set exercise3;
 array x{4} preop day1 week1 month1;
   do i=1 to 4;
   visit = i;
   score = x{i};
   if kneenumber = 1;
     output;
     end;
run;
proc print noobs;
run;

 

And this is my output:

ID    visit    score
                                       01      1        0
                                       01      2        .
                                       01      3        .
                                       01      4        .
                                       02      1        0
                                       02      2        .
                                       02      3        .
                                       02      4        .
                                       03      1        0
                                       03      2        .
                                       03      3        .
                                       03      4        .
                                       04      1        0
                                       04      2        .
                                       04      3        .
                                       04      4        .
 I'm not sure what I'm doing wrong, please help!!!

Please closely examine the names of the variables highlighted.

 

An array statement will create new variables if the name referenced on the array statement does not already exist.

 

You used three variable names on the array statement that were not already in the input data set.

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
  • 1 reply
  • 476 views
  • 0 likes
  • 2 in conversation