Hello, I have a matrix called DATA which contains informations on thousands of people of an insurance portfolio including their age. I have also a mortality table (for each age from 18 to 110 it gives me the probability of death). I split this table in 2 matrix (1 column, 92 rows): Age and Qx. Now, I want to find for each people of DATA, the right mortality rate Qx. Let's say that DATA_AGE is a column vector of all the ages of my portfolio. POS=loc(Age=DATA_AGE); Qx_Data=Qx[POS]; But this code doesn't work, it seems that LOC function cannot locate a vector of elements, but only one element. So I have to write this code: POS=J(nrow(DATA),1,0); do i=1 to nrow(DATA_AGE); POS=loc(Age=DATA_AGE); end; Qx_Data=Qx[POS]; This code is very slow, so I wonder if there is a more powerful way to search for elements in IML? Thank you. Sample code: proc iml; /* Mortality rates */ Age={40,41,42,43,44,45,46,47,48,49,50}; Qx={0.01,0.011,0.012,0.013,0.014,0.015,0.016,0.017,0.018,0.019,0.020}; /* Data */ Data={50,43,41}; /* What I want to do */ POS=LOC(Age=Data); Qx_Data=Qx[POS]; /* What I currently do */ POS=J(nrow(Data),1,0); do i=1 to nrow(Data); POS=loc(Age=Data); end; Qx_Data=Qx[POS]; print Qx_Data; quit;
... View more