Hi,
I have two vectors like
A = {6,4,3,2,5,1};
B = {2,3};
I want to get another vector which contains the different elements comparing A and B. So I tried using SETDIF function.
C = setdif(A,B);
which returns the vector C is {1 4 5 6}. But, what I want is the not-sorted vector {6 4 5 1}.
Does anyone know how I could get the vector I want?
Thanks very much!
I am thinking there should be a simpler solution than this:
C = remove( A, loc( ( (repeat(A, 1, nrow(B) )=t(B)) [ ,+] ) > 0) );
But I can't see any. This works for your example, but note that it will retain any repeated values in A, so A={6,4,3,2,5,1,4} would return {6 4 5 1 4}.
I am thinking there should be a simpler solution than this:
C = remove( A, loc( ( (repeat(A, 1, nrow(B) )=t(B)) [ ,+] ) > 0) );
But I can't see any. This works for your example, but note that it will retain any repeated values in A, so A={6,4,3,2,5,1,4} would return {6 4 5 1 4}.
Thank you, IanWakeling. I have searched for hours yesterday before I posted the question here and I didn't find anything simpler than your solution here. Actually I would like to retain repeated values in the vector C so thanks again.
Use the ELEMENT function:
A = {6,4,3,2,5,1};
B = {2,3};
C = A[ loc(^element(A,B)) ];
That's perfection. Thank you Rick.
Thank you, Rick. That is awesome.
I blogged about this problem: Finding elements in one vector that are not in another vector - The DO Loop
I saw it. I subscribed your blog. Very helpful.
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!
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.