Statistical programming, matrix languages, and more

Reading the first in every set of values in a column

Accepted Solution Solved
Reply
Contributor
Posts: 24
Accepted Solution

Reading the first in every set of values in a column

 

I have a matrix (let's call it D) with 20 rows (+ column name) and 2 columns. The matrix has been sorted in a particular way, and I want to read the first of every 4 values in the the first column to another matrix. The following code worked on a small "test" dataset (small enough that I could check the results manually), but is there a reason it could produce wrong results (for example, read a number twice from a particular set of four, but zero times from another set)?

 

proc iml;
use sasdata.testnum;
read all var _ALL_ into D[colname = varNames];
close sasdata.testnum;
print D;
 
T = j(5, 1, 0);
 
t_row = 1;
do y = 1 to 21 by 4;
    T[t_row, 1] = D[y, 1];
t_row = t_row + 1;
print T;
 
end;
 

In other words, does anyone see anything wrong with this code? Is there a better way of doing what I have done here?


Accepted Solutions
Solution
‎12-06-2015 05:53 AM
SAS Super FREQ
Posts: 3,420

Re: Reading the first in every set of values in a column

Use this. It uses the DO function to generate the sequewnce {1, 5, 9,...}:

 

t_row = do(1, nrow(D), 4);
T = D[t_row, 1];

View solution in original post


All Replies
Regular Contributor
Posts: 161

Re: Reading the first in every set of values in a column

Have you considered using the var _n_ along with a divisibility function I believe it is called MODZ () ??

Kannan Deivasigamani
Solution
‎12-06-2015 05:53 AM
SAS Super FREQ
Posts: 3,420

Re: Reading the first in every set of values in a column

Use this. It uses the DO function to generate the sequewnce {1, 5, 9,...}:

 

t_row = do(1, nrow(D), 4);
T = D[t_row, 1];
☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 480 views
  • 0 likes
  • 3 in conversation