If/then/Else dans SAS ne fonctionne Pas
De la difficulté à obtenir cette if/then/Else ne fonctionne pas. J'ai deux colonnes: la Variable et la Valeur. Variable est le nom de la variable et la Valeur de a tout le potentiel des codes qui pourraient être associés à cette Variable.
Exemple:
Variable Value
Gender F
Gender M
Je veux créer un champ appelé "Drapeau" et si la valeur n'est pas parmi la liste de valeurs, il doit signaler que le terrain; sinon, laissez ce champ vide
data Want;
length
Variable $40.
Value $40.
Flag $8.;
set Have (keep = Variable Value);
if (Variable = 'Gender' and Value ^= 'M') then Flag = 'UnkCode'; else Flag="";
if (Variable = 'Gender' and Value ^= 'F') then Flag = 'UnkCode'; else Flag="";
if (Variable = 'Gender' and Value ^= 'O') then Flag = 'UnkCode'; else Flag="";
if (Variable = 'Gender' and Value ^= 'U') then Flag = 'UnkCode'; else Flag="";
run;
quit;
Le jeu de données que j'utilise a n'a que deux valeurs pour le Sexe: F et M. Pour quelque raison que ce soit, le champ indicateur dans les deux lignes a "UnkCode"
Une idée de ce que je fais mal?
Parce que le dernier de vos conditions seront toujours à la hauteur de votre jeu de données. Intéressant langue mais
OriginalL'auteur Farah | 2014-05-01
Vous devez vous connecter pour publier un commentaire.
Juste pour être, éventuellement, un peu plus clair: votre si les déclarations sont évalués de façon séquentielle.
Donc, pour votre première observation, le Drapeau sera d'abord "", comme ('M' = 'M'). Toutefois, le Drapeau est alors remplacée par votre ultérieure si les déclarations, et que ('M' ^= 'F'), le Drapeau est écrasé, et prend la valeur 'UnkCode'.
En plus de Keni de l'utilisation d'un énoncé (ce qui est mieux que le code que je vais proposer), vous pouvez également effectuer les opérations suivantes (qui peuvent vous aider à comprendre si les déclarations de mieux en mieux).
J'indique également qu'au lieu d'avoir une variable nommée "Variable", avec une valeur de 'Genre', il vous suffit d'avoir une variable nommée "Sexe" avec une valeur de 'F' ou 'M'. Alors il ya certainement des circonstances spécifiques dans lesquelles vous ne voulez pas créer votre jeu de données de cette façon, ils sont relativement peu et loin entre.
Bonne réponse, c'est mieux d'expliquer quel est le problème avec le code d'origine plutôt que de dire, "c'est mal, ce qui est juste".
OriginalL'auteur Nate
J'ai mis tous les SI les conditions en une seule instruction, et cela a fonctionné.
Pour de multiples variables de drapeau... cela devrait fonctionner.
N/M! Quand je fais le sinon si entre chaque ligne, il fonctionne très bien. Merci beaucoup!!
Oui, j'ai ajouté du code pour les nouvelles variables. Déclarant le Drapeau comme unkcode d'abord, puis en modifiant la valeur à vide après la vérification des travaux.
OriginalL'auteur Keni