- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 11-18-2019 08:51 PM
(791 views)
Attempting to create new variable top breed based on dog data set. Trying to set top breed to 1 if the breed contains the words in the if statement , and 0 if not. Currently code is:
data_aac_new_variable;
set = dog_data;
if breed = "Bulldog", "Lab", "Terrier", "Shepherd", "Beagle" then Topbreed = 1;
else = 0;
run;
5 REPLIES 5
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
if breed in ("Bulldog", "Lab", "Terrier", "Shepherd", "Beagle") then
use the IN operator
data _aac_new_variable;
set dog_data;
if breed in ( "Bulldog", "Lab", "Terrier", "Shepherd", "Beagle") then Topbreed = 1;
else = 0;
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Few Issues With the code corrected:
data_aac_new_variable;
set dog_data;
if breed in ("Bulldog", "Lab", "Terrier", "Shepherd", "Beagle" ) then Topbreed = 1;
else Topbreed = 0;
run;
data_aac_new_variable;set = dog_data;if breed= "Bulldog", "Lab", "Terrier", "Shepherd", "Beagle" then Topbreed = 1;else = 0;run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the reply. Is there anyway to add a contains to the if breed in statement? Some data says Lab whereas other data says Labrador
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Try :
data _aac_new_variable;
set dog_data;
if breed in ("Bulldog", "Terrier", "Shepherd", "Beagle" ) or breed =:'Lab' then Topbreed = 1;
else Topbreed = 0;
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
You can reduce this to one statement if you use a Boolean expression:
Topbreed = (if breed in ("Bulldog", "Terrier", "Shepherd", "Beagle" ) or breed =:'Lab');