0
votes

Comment affecter la valeur à une nouvelle variable d'une autre valeur de la variable dans SAS

donc je crée une nouvelle base de données appelée sitesweb2 d'un autre appelé sitesweb parce que je veux juste garder certaines variables. Ce ne sont que des variables binaires.

alors je veux créer une nouvelle variable appelée Fonction qui prendra:

  • Valeur 1 Quand il y a un 1 dans les variables M N o P Q R S T U.
  • Valeur 2 Lorsqu'il y a 1 dans l'AA AB AB AE AG AH AI Variables.
  • Valeur 3 Quand il y a 1 dans les variables AK Al.

    J'ai le code suivant, mais cela ne crée pas la variable Fonction : xxx

    Qu'est-ce qui ne va pas?

sas

0 commentaires

3 Réponses :


0
votes

Besoin d'opérateur / Opérande droite pour chaque variable. Ça ne répond pas à la condition: -

if sum(M,N,...)>=1 then...


0 commentaires

0
votes

Vérification du '1' code> dans le résultat de la concaténation d'un tableau qui fait référence aux variables.

array _1_vars M N O P Q R S T U;
array _2_vars AA AB AC AD AE AF AG AH AI AJ;
array _3_var3 AK AL;

select;
  when (index(cats(of _1_vars(*),'1') then fonction = '1';
  when (index(cats(of _2_vars(*),'1') then fonction = '2';
  when (index(cats(of _3_vars(*),'1') then fonction = '3';
  otherwise ;
end;


0 commentaires

0
votes

Pour vérifier si une valeur apparaît dans une liste de variables, vous pouvez utiliser la fonction qui () ou laquellec.). Il retournera le numéro de la variable où il est trouvé pour la première fois. Si non trouvé, il retournera zéro. SAS traite 0 comme faux et tout autre nombre comme vrai.

data DEV1.SITESWEB2;
  set DEV1.SITESWEB ;
  keep INDUSTRIE M N O P Q R S T U AA AB AC AD AE AF AG AH AI AJ AK AL ;
  if whichc('1', of M N O P Q R S T U) then fonction = 1 ;
  else if whichc('1', of AA AB AC AD AE AF AG AH AI AJ) then fonction = 2;
  else if whichc('1', of AK AL) then fonction = 3;
  keep fonction ;
run;


0 commentaires