Dear all,
I would like to find an efficient way do delete zero column.
(part of my simulation results are matrix with zero columns
so I can't invert the matrix and it ends with empty value).
for example:
C={1 1 0 0 0,
1 0 0 1 0,
1 0 0 1 0}
I want to get:
D={1 1 0,
1 0 1,
1 0 1}
Thank you,
Orit
You must have misunderstood my suggestion. You use S to find and extract the rows of the original matrix:
S = (C^=0);
cols = loc(S[+, ]>0);
if ncol(cols)>0 then
D = C[,cols];
else
D = C;
Are your matrix elements always binary 0/1? If so, just sum down the columns and keep the colums that sum to any positive value:
cols = loc(C[+, ]>0);
if ncol(cols)>0 then
D = C[,cols];
else
D = C;
Thank you Rick!
But No, my matrix contains positive and negative number in their columns.
Like
C={5 6 0 0 0,
-5 0 0 -8 0,
0 0 0 7 0}
How do you recommend do solve that ?
Thanks,
Orit
Define
S = (C^=0);
S is a binary 0/1 matrix, so use the previous code I sent.
That is elegant,thanks!
The only problem is, that you end this code with the binary matrix.
I need the original matrix because I use it for other computations.(for ols coefficients)
How do you recommend to do that?
Thanks,
Orit
You must have misunderstood my suggestion. You use S to find and extract the rows of the original matrix:
S = (C^=0);
cols = loc(S[+, ]>0);
if ncol(cols)>0 then
D = C[,cols];
else
D = C;
Thank you Rick!!
Please check this works for you:
x=(C^=0);
Cnew=C[,loc(x[+,]^=0)];
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.