- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I'm having an issue that I hope you can help with.
I have a very large dataset with multiple variables that I need to combine into various categories.
I've attempted this way:
IF (var1=1 and var2=1 and var3=1 and var4=1 and var5=1 and var6=1) OR
(var1=1 and var2=1 and var3=1 and var4=1 and var5=1 and var7=1) OR
(var1=1 and var2=1 and var3=1 and var4=1 and var5=1 and var8=1) OR
(var2=1 and var3=1 and var4=1 and var5=1 and var6=1 and var7=1) OR......
THEN combo6=1, else combo6=0
As you can see, this process has been tedious, and not very effective as the combinations i'm getting equal more than the data I have available. Does anyone have any idea how to accomplish this?
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Based on your incomplete explanation a statement like this may be helpful.
combo6= (sum(of var1 - var8) = 6);
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Forget SAS for a second. What is the logical rule that you are trying to program? Please explain.
Paige Miller
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Sure. The logic rule I'm attempting to follow is pretty simple, but hard to describe in text. Essentially, we have A, B, C, D, E, F, G, and H. What I need is all of the combinations of these letters in sets of 8, 7, 6, 5, and 4.
For example:
(A,B,C,D)=combo4
(B,C,D,E)=combo4
(C,D,E,F)=combo4
and so on.
However, the dataset given to me is categorical. I only want the variables that are "yes" (A=1, B=1, etc), included in the new variable.
8 is easy, but the remaining get complicated. Did that clarify at all?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
@aowusudommey wrote:
Sure. The logic rule I'm attempting to follow is pretty simple, but hard to describe in text. Essentially, we have A, B, C, D, E, F, G, and H. What I need is all of the combinations of these letters in sets of 8, 7, 6, 5, and 4.
For example:
(A,B,C,D)=combo4
(B,C,D,E)=combo4
(C,D,E,F)=combo4
and so on.
However, the dataset given to me is categorical. I only want the variables that are "yes" (A=1, B=1, etc), included in the new variable.
8 is easy, but the remaining get complicated. Did that clarify at all?
May we assume that if A is not equal to 1, then it must be zero?
Paige Miller
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
That is correct, each variable is assigned a value of either 1 or 0, there are no missing values.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
So sorry, I should further explain that I would need any variable in the string that is equal 0 to cause the entire row to be equal to zero.
For example
(A=1 and B=1 and C=1 and D=1), then combo4=1
However:
(A=1 and B=1 and C=1 and D=0) then combo4=0
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Based on your incomplete explanation a statement like this may be helpful.
combo6= (sum(of var1 - var8) = 6);
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I am unfortunately not looking for a sum, I'm looking to have every possible combination of these 8 binary variables to be assigned to a new variable. So that, for example, every combination of 6 of the 8 variables would equal combo6, every combination of 5 of the 8 variables would equal combo5, and so on. I'm very sorry, I am not able to give exact information without violating a privacy agreement.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
But summing any combination of 8 binary variables where the total is 6 will give you one of your answers - combo6?
var1 = 1 plus var2 = 1 plus var3 = 1 plus var4 = 1 plus var5 = 1 plus var6 = 1 equals 6.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
You are absolutely correct, wow I cannot believe it was that simple. Thank you so much.