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 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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
  • 1542 views
  • 0 likes
  • 2 in conversation