BookmarkSubscribeRSS Feed
trekvana
Calcite | Level 5
hello all,

how can I augment a vector or matrix with proc iml?

for example, lets say i have a vector x={1,2} and I want to augment x to a 4x1 vector with missing value indictor (.) in positions 2 and 3. in other words i want x=(1, . , . , 2}. is this possible to do??

pretty much i have an x vector and i also have an index vector (i={2,3} in this example) with the positions i want to include the (.) character.
2 REPLIES 2
Rick_SAS
SAS Super FREQ
The easiest way is to allocate a matrix of missing values and then fill in the nonmissing values by using subscripts. Suppose your data look like this:

N = 4; /** number of rows after including missing values **/
MissingIdx = {2, 3}; /** indices of rows that contain missing **/
x = {1,2}; /** data values **/

The hard part is that you need to know the indices of the NONmissing observations, which you can find by using the SETDIF function. The function is explained at
http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/langref_sect241.htm

NMidx = setdif(1:N, MissingIdx); /** find the indices for nonmissing values **/
newX = repeat(., N); /** create answer vector with all missings **/
newX[NMidx] = x; /** assign nonmissing values in the specified locations **/
print newX;
trekvana
Calcite | Level 5
Thanks Rick!

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 2 replies
  • 1099 views
  • 0 likes
  • 2 in conversation