Hi guys. I have two columns value1 and value2, in value1, say, I have three observations a, b, c, in value2, I have 4 observations a, a, b,m, I want to create a dummy variable match for each row in value1, if the value can be found in value 2, then match=1 otherwise it is 0. So for this dataset, it should be 1,1,0. Can anyone help me with this? Thanks a lot!
Data A;
Input value1 $ value2 $;
Datalines;
a a
b a
c b
. m
;
Run;
Data B;
If _N_ eq 1 Then Do;
Declare Hash H (Dataset:'A (Drop=value1 Rename=(value2=value1)');
H.Definekey('value1');
H.Definedone();
If 0 Then Set A (Drop=value1 Rename=(value2=value1));
End;
Set A;
dummy=1-Min(H.Find(),1);
Run;
Data A;
Input value1 $ value2 $;
Datalines;
a a
b a
c b
. m
;
Run;
Data B;
If _N_ eq 1 Then Do;
Declare Hash H (Dataset:'A (Drop=value1 Rename=(value2=value1)');
H.Definekey('value1');
H.Definedone();
If 0 Then Set A (Drop=value1 Rename=(value2=value1));
End;
Set A;
dummy=1-Min(H.Find(),1);
Run;
Use PROC GLMMOD to create dummy variables.
Thanks PaigeMiller!
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.
Find more tutorials on the SAS Users YouTube channel.