2017-06-28 4 views
2

J'ai ces données, à la recherche quelque chose comme ceci:SAS: les lignes en double et changer quelques variables

data test;      
    input ID $ Week Age Weight City $ Sex $; 
    datalines;   
John 2 64 145 OK M 
Gary 3 46 176 OM M 

;       


run; 

Donc, ici je dois les lignes, et je veux faire ce qui suit: -duplicate chaque ligne comme plusieurs fois nécessaire pour obtenir chaque combinaison de changer les trois variables Semaine, Poids et Ville avec -1, 0 et +1. Par exemple, la première ligne multiplierait 3 * 3 * 3 fois:

John 1 63 144 OK M 
John 1 63 145 OK M 
John 1 63 146 OK M 
John 1 64 144 OK M 
John 1 64 145 OK M 
John 1 64 146 OK M 
    ... etc 

Je pense quelque chose comme une boucle:

data test2; 
set test; 
do i = -1 to 1; 
    do j = -1 to 1; 

     do k = -1 to 1; 


     end; 

    end; 

output; 
end; 
run; 

, mais je ne peux pas voir comment le mettre correctement .

+0

Merci d'avoir posté des données comme une étape de données! – Reeza

Répondre

2

Vous êtes presque là, vous devez ajouter les incréments pour les variables.

data test; 
    input ID $ Week Age Weight City $ Sex $; 
    datalines; 
John 2 64 145 OK M 
Gary 3 46 176 OM M 

; 
run; 

data want; 
    set test; 

    do j=-1 to 1; 
     weight = weight + j; 

     do k=-1 to 1; 
      age = age + k; 

      do l = -1 to 1; 
       week = week + l; 
       output; 
      end; 


     end; 
    end; 

    drop j k l; 
run; 
+0

Merci pour ça! SAS écrase donc les variables de semaine, d'âge et de poids existantes - sans poser de questions? – Erosennin

+1

Oui, j'ai vérifié cette double et réalisé que je devais déplacer l'instruction OUTPUT à la boucle la plus interne. – Reeza