Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Array sur sas
2 participants
Page 1 sur 1
Array sur sas
Bonjour, je me pratique sur sas à faire des array. Voici ma syntaxe, qui me semble correcte et pourtant je n'obtiens pas le même résultat pour simplement calculer le score toal (même si "scoret" est déjà là; il a été calculé à la main par des étudiants). Mon but est simplement de calculer un autre score total "scoresas". La méthode que j'utilisais avant "if then" fonctionne bien mais est bien plus longue. Merci d'avance à celui ou celle qui pourrait m'aider.
OPTIONS LINESIZE = 80 PAGESIZE = 60 PAGENO = 1 NOLABEL;
data devoir4;
input sujet var01 var02 var03 var04 var05 var06 var07 var08 var09 var10 var11 var12 var13 var14 var15
var16 var17 var18 var19 var20 var21 var22 var23 var24 scoret;
***P;
array devoir1 {24} var01 var02 var03 var04 var05 var06 var07 var08 var09 var10 var11 var12
var13 var14 var15 var16 var17 var18 var19 var20 var21 var22 var23 var24;
do i = 1 to 4;
if devoir1[i]= 3 then devoir1[i]=2;
end;
drop i;
****j;
array devoir2 {12} var02 var04 var06 var08 var10 var12 var14 var16 var18 var20 var22 var24;
do i = 1 to 4;
if devoir2[i]= 1 then devoir2[i]=1;
end;
drop i;
array devoir3 {12} var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do i = 1 to 4;
if devoir3[i]= 1 then devoir3[i]=3;
end;
drop i;
***r;
array devoir4 {12} var02 var04 var06 var08 var10 var12 var14 var16 var18 var20 var22 var24;
do i = 1 to 4;
if devoir4[i]= 2 then devoir4[i]=1;
end;
drop i;
array devoir5 {12} var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do i = 1 to 4;
if devoir5[i]= 2 then devoir5[i]=3;
end;
drop i;
***s;
array devoir6 {12} var02 var04 var06 var08 var10 var12 var14 var16 var18 var20 var22 var24;
do i = 1 to 4;
if devoir6[i]= 4 then devoir6[i]=3;
end;
drop i;
array devoir7 {12} var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do i = 1 to 4;
if devoir7[i]= 4 then devoir7[i]=1;
end;
drop i;
scoresas = var01+var02+var03+var04+var05+var06+var07+var08+var09+var10+var11+var12
+var13+var14+var15+var16+var17+var18+var19+var20+var21+var22+var23+var24;
dif = scoresas-scoret;
cards;
101 1 4 1 3 1 3 3 4 2 4 2 4 1 2 1 4 2 4 2 4 2 2 1 4 61
102 3 4 2 4 3 3 3 4 3 4 3 2 3 2 2 2 2 3 3 3 3 4 3 3 53
103 1 4 2 4 2 3 1 4 3 4 2 1 1 1 3 1 1 4 4 4 3 4 3 4 59
104 3 2 3 3 1 3 4 4 3 4 4 3 4 3 2 3 3 4 3 2 3 4 4 3 49
105 3 4 2 4 3 4 3 4 3 3 2 1 2 2 3 2 2 4 3 4 3 4 3 3 53
106 1 4 2 4 4 3 4 4 3 4 1 2 2 3 3 3 3 2 2 4 2 4 3 3 56
107 3 3 2 3 3 3 2 4 2 3 1 3 4 2 2 3 2 3 4 3 2 3 3 2 52
108 1 2 2 4 2 2 3 3 3 3 2 1 1 3 2 2 1 4 1 3 2 4 2 4 58
109 1 3 1 4 2 3 1 4 3 3 4 4 3 1 2 4 2 3 3 4 1 4 3 4 57
110 4 3 3 4 3 3 2 4 3 4 3 3 3 2 3 3 4 3 4 3 4 4 3 3 48
111 2 3 2 4 3 4 3 4 2 4 2 1 3 2 2 2 2 3 2 4 1 4 3 4 60
112 1 3 1 4 1 4 3 4 2 4 3 1 1 3 2 1 2 4 2 4 3 4 3 3 62
113 3 4 2 4 2 4 3 4 2 4 3 4 2 3 2 4 2 4 3 4 2 4 3 3 65
114 1 4 3 4 1 4 2 4 2 4 3 4 1 4 2 2 1 4 2 4 1 4 3 4 66
115 2 2 3 4 2 4 4 4 2 2 3 4 3 1 2 1 1 4 3 4 2 4 3 4 47
116 3 3 4 3 2 3 1 4 3 4 3 1 3 3 2 4 2 4 2 3 3 4 3 3 56
117 3 4 3 4 2 4 3 4 2 3 2 1 2 3 1 2 2 4 2 4 1 4 3 4 62
118 1 3 2 4 3 3 2 3 3 4 2 3 2 1 2 1 2 4 2 4 2 4 3 4 58
119 1 3 3 3 2 3 3 1 3 3 3 4 3 2 3 2 2 4 2 3 2 4 3 4 52
120 2 4 2 4 3 3 3 4 3 3 2 2 3 3 2 4 3 3 3 3 2 4 3 3 54
121 1 3 1 4 4 3 2 4 4 3 3 2 4 3 1 4 3 3 3 2 3 4 4 3 50
122 4 4 2 4 2 4 3 3 3 4 3 2 4 1 3 2 2 4 3 3 2 4 4 4 53
123 1 4 1 4 2 4 3 4 2 4 2 3 1 3 1 1 2 4 2 4 1 4 1 4 67
124 1 3 2 4 3 3 2 4 4 3 2 1 3 4 1 3 1 2 3 3 2 3 4 2 53
;
run;
proc means n mean std skew kurt min max;
var scoresas scoret;
run;
proc print;
var scoresas scoret dif;
run;
OPTIONS LINESIZE = 80 PAGESIZE = 60 PAGENO = 1 NOLABEL;
data devoir4;
input sujet var01 var02 var03 var04 var05 var06 var07 var08 var09 var10 var11 var12 var13 var14 var15
var16 var17 var18 var19 var20 var21 var22 var23 var24 scoret;
***P;
array devoir1 {24} var01 var02 var03 var04 var05 var06 var07 var08 var09 var10 var11 var12
var13 var14 var15 var16 var17 var18 var19 var20 var21 var22 var23 var24;
do i = 1 to 4;
if devoir1[i]= 3 then devoir1[i]=2;
end;
drop i;
****j;
array devoir2 {12} var02 var04 var06 var08 var10 var12 var14 var16 var18 var20 var22 var24;
do i = 1 to 4;
if devoir2[i]= 1 then devoir2[i]=1;
end;
drop i;
array devoir3 {12} var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do i = 1 to 4;
if devoir3[i]= 1 then devoir3[i]=3;
end;
drop i;
***r;
array devoir4 {12} var02 var04 var06 var08 var10 var12 var14 var16 var18 var20 var22 var24;
do i = 1 to 4;
if devoir4[i]= 2 then devoir4[i]=1;
end;
drop i;
array devoir5 {12} var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do i = 1 to 4;
if devoir5[i]= 2 then devoir5[i]=3;
end;
drop i;
***s;
array devoir6 {12} var02 var04 var06 var08 var10 var12 var14 var16 var18 var20 var22 var24;
do i = 1 to 4;
if devoir6[i]= 4 then devoir6[i]=3;
end;
drop i;
array devoir7 {12} var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do i = 1 to 4;
if devoir7[i]= 4 then devoir7[i]=1;
end;
drop i;
scoresas = var01+var02+var03+var04+var05+var06+var07+var08+var09+var10+var11+var12
+var13+var14+var15+var16+var17+var18+var19+var20+var21+var22+var23+var24;
dif = scoresas-scoret;
cards;
101 1 4 1 3 1 3 3 4 2 4 2 4 1 2 1 4 2 4 2 4 2 2 1 4 61
102 3 4 2 4 3 3 3 4 3 4 3 2 3 2 2 2 2 3 3 3 3 4 3 3 53
103 1 4 2 4 2 3 1 4 3 4 2 1 1 1 3 1 1 4 4 4 3 4 3 4 59
104 3 2 3 3 1 3 4 4 3 4 4 3 4 3 2 3 3 4 3 2 3 4 4 3 49
105 3 4 2 4 3 4 3 4 3 3 2 1 2 2 3 2 2 4 3 4 3 4 3 3 53
106 1 4 2 4 4 3 4 4 3 4 1 2 2 3 3 3 3 2 2 4 2 4 3 3 56
107 3 3 2 3 3 3 2 4 2 3 1 3 4 2 2 3 2 3 4 3 2 3 3 2 52
108 1 2 2 4 2 2 3 3 3 3 2 1 1 3 2 2 1 4 1 3 2 4 2 4 58
109 1 3 1 4 2 3 1 4 3 3 4 4 3 1 2 4 2 3 3 4 1 4 3 4 57
110 4 3 3 4 3 3 2 4 3 4 3 3 3 2 3 3 4 3 4 3 4 4 3 3 48
111 2 3 2 4 3 4 3 4 2 4 2 1 3 2 2 2 2 3 2 4 1 4 3 4 60
112 1 3 1 4 1 4 3 4 2 4 3 1 1 3 2 1 2 4 2 4 3 4 3 3 62
113 3 4 2 4 2 4 3 4 2 4 3 4 2 3 2 4 2 4 3 4 2 4 3 3 65
114 1 4 3 4 1 4 2 4 2 4 3 4 1 4 2 2 1 4 2 4 1 4 3 4 66
115 2 2 3 4 2 4 4 4 2 2 3 4 3 1 2 1 1 4 3 4 2 4 3 4 47
116 3 3 4 3 2 3 1 4 3 4 3 1 3 3 2 4 2 4 2 3 3 4 3 3 56
117 3 4 3 4 2 4 3 4 2 3 2 1 2 3 1 2 2 4 2 4 1 4 3 4 62
118 1 3 2 4 3 3 2 3 3 4 2 3 2 1 2 1 2 4 2 4 2 4 3 4 58
119 1 3 3 3 2 3 3 1 3 3 3 4 3 2 3 2 2 4 2 3 2 4 3 4 52
120 2 4 2 4 3 3 3 4 3 3 2 2 3 3 2 4 3 3 3 3 2 4 3 3 54
121 1 3 1 4 4 3 2 4 4 3 3 2 4 3 1 4 3 3 3 2 3 4 4 3 50
122 4 4 2 4 2 4 3 3 3 4 3 2 4 1 3 2 2 4 3 3 2 4 4 4 53
123 1 4 1 4 2 4 3 4 2 4 2 3 1 3 1 1 2 4 2 4 1 4 1 4 67
124 1 3 2 4 3 3 2 4 4 3 2 1 3 4 1 3 1 2 3 3 2 3 4 2 53
;
run;
proc means n mean std skew kurt min max;
var scoresas scoret;
run;
proc print;
var scoresas scoret dif;
run;
philippe777- Nombre de messages : 12
Age : 35
Localisation : Canada
Date d'inscription : 23/08/2013
Re: Array sur sas
Bonjour,
je vois pas trop ce que tu veux faire avec tes étapes :
je vois pas trop ce que tu veux faire avec tes étapes :
- Code:
***P;
array devoir1 {24} var01 var02 var03 var04 var05 var06 var07 var08 var09 var10 var11 var12
var13 var14 var15 var16 var17 var18 var19 var20 var21 var22 var23 var24;
do i = 1 to 4;
if devoir1[i]= 3 then devoir1[i]=2;
end;
drop i;
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Array sur sas
Désoler pour le delai de réponse.
Donc le but ici est de recalculer un nouveau score total selon les modalité suivant.
Les 3 doivent devenir 2
Questions paires: les 1 restent des 1, les 2 devienne des 1 et les 4 deviene des 3
Questions impaires: les 1 deviennent des 3, les 2 deviennet des 3 et les 4 deviennent des 1.
Voila!
D'habitude je l'aurais fait avec la syntaxe suivante que j'ai testé; elle fonctionne.
*** les P;
if var01= 3 then var01b = 2;
if var02= 3 then var02b = 2;
if var03= 3 then var03b = 2;
if var04= 3 then var04b = 2;
if var05= 3 then var05b = 2;
if var06= 3 then var06b = 2;
if var07= 3 then var07b = 2;
if var08= 3 then var08b = 2;
if var09= 3 then var09b = 2;
if var10= 3 then var10b = 2;
if var11= 3 then var11b = 2;
if var12= 3 then var12b = 2;
if var13= 3 then var13b = 2;
if var14= 3 then var14b = 2;
if var15= 3 then var15b = 2;
if var16= 3 then var16b = 2;
if var17= 3 then var17b = 2;
if var18= 3 then var18b = 2;
if var19= 3 then var19b = 2;
if var20= 3 then var20b = 2;
if var21= 3 then var21b = 2;
if var22= 3 then var22b = 2;
if var23= 3 then var23b = 2;
if var24= 3 then var24b = 2;
*** les J;
if var01= 1 then var01b = 3;
if var02= 1 then var02b = 1;
if var03= 1 then var03b = 3;
if var04= 1 then var04b = 1;
if var05= 1 then var05b = 3;
if var06= 1 then var06b = 1;
if var07= 1 then var07b = 3;
if var08= 1 then var08b = 1;
if var09= 1 then var09b = 3;
if var10= 1 then var10b = 1;
if var11= 1 then var11b = 3;
if var12= 1 then var12b = 1;
if var13= 1 then var13b = 3;
if var14= 1 then var14b = 1;
if var15= 1 then var15b = 3;
if var16= 1 then var16b = 1;
if var17= 1 then var17b = 3;
if var18= 1 then var18b = 1;
if var19= 1 then var19b = 3;
if var20= 1 then var20b = 1;
if var21= 1 then var21b = 3;
if var22= 1 then var22b = 1;
if var23= 1 then var23b = 3;
if var24= 1 then var24b = 1;
*** les R;
if var01= 2 then var01b = 3;
if var02= 2 then var02b = 1;
if var03= 2 then var03b = 3;
if var04= 2 then var04b = 1;
if var05= 2 then var05b = 3;
if var06= 2 then var06b = 1;
if var07= 2 then var07b = 3;
if var08= 2 then var08b = 1;
if var09= 2 then var09b = 3;
if var10= 2 then var10b = 1;
if var11= 2 then var11b = 3;
if var12= 2 then var12b = 1;
if var13= 2 then var13b = 3;
if var14= 2 then var14b = 1;
if var15= 2 then var15b = 3;
if var16= 2 then var16b = 1;
if var17= 2 then var17b = 3;
if var18= 2 then var18b = 1;
if var19= 2 then var19b = 3;
if var20= 2 then var20b = 1;
if var21= 2 then var21b = 3;
if var22= 2 then var22b = 1;
if var23= 2 then var23b = 3;
if var24= 2 then var24b = 1;
*** les S;
if var01= 4 then var01b = 1;
if var02= 4 then var02b = 3;
if var03= 4 then var03b = 1;
if var04= 4 then var04b = 3;
if var05= 4 then var05b = 1;
if var06= 4 then var06b = 3;
if var07= 4 then var07b = 1;
if var08= 4 then var08b = 3;
if var09= 4 then var09b = 1;
if var10= 4 then var10b = 3;
if var11= 4 then var11b = 1;
if var12= 4 then var12b = 3;
if var13= 4 then var13b = 1;
if var14= 4 then var14b = 3;
if var15= 4 then var15b = 1;
if var16= 4 then var16b = 3;
if var17= 4 then var17b = 1;
if var18= 4 then var18b = 3;
if var19= 4 then var19b = 1;
if var20= 4 then var20b = 3;
if var21= 4 then var21b = 1;
if var22= 4 then var22b = 3;
if var23= 4 then var23b = 1;
if var24= 4 then var24b = 3;
scoresas = var01b+var02b+var03b+var04b+var05b+var06b+var07b+var08b+var09b+var10b+var11b+var12b+
var13b+var14b+var15b+var16b+var17b+var18b+var19b+var20b+var21b+var22b+var23b+var24b;
Donc le but ici est de recalculer un nouveau score total selon les modalité suivant.
Les 3 doivent devenir 2
Questions paires: les 1 restent des 1, les 2 devienne des 1 et les 4 deviene des 3
Questions impaires: les 1 deviennent des 3, les 2 deviennet des 3 et les 4 deviennent des 1.
Voila!
D'habitude je l'aurais fait avec la syntaxe suivante que j'ai testé; elle fonctionne.
*** les P;
if var01= 3 then var01b = 2;
if var02= 3 then var02b = 2;
if var03= 3 then var03b = 2;
if var04= 3 then var04b = 2;
if var05= 3 then var05b = 2;
if var06= 3 then var06b = 2;
if var07= 3 then var07b = 2;
if var08= 3 then var08b = 2;
if var09= 3 then var09b = 2;
if var10= 3 then var10b = 2;
if var11= 3 then var11b = 2;
if var12= 3 then var12b = 2;
if var13= 3 then var13b = 2;
if var14= 3 then var14b = 2;
if var15= 3 then var15b = 2;
if var16= 3 then var16b = 2;
if var17= 3 then var17b = 2;
if var18= 3 then var18b = 2;
if var19= 3 then var19b = 2;
if var20= 3 then var20b = 2;
if var21= 3 then var21b = 2;
if var22= 3 then var22b = 2;
if var23= 3 then var23b = 2;
if var24= 3 then var24b = 2;
*** les J;
if var01= 1 then var01b = 3;
if var02= 1 then var02b = 1;
if var03= 1 then var03b = 3;
if var04= 1 then var04b = 1;
if var05= 1 then var05b = 3;
if var06= 1 then var06b = 1;
if var07= 1 then var07b = 3;
if var08= 1 then var08b = 1;
if var09= 1 then var09b = 3;
if var10= 1 then var10b = 1;
if var11= 1 then var11b = 3;
if var12= 1 then var12b = 1;
if var13= 1 then var13b = 3;
if var14= 1 then var14b = 1;
if var15= 1 then var15b = 3;
if var16= 1 then var16b = 1;
if var17= 1 then var17b = 3;
if var18= 1 then var18b = 1;
if var19= 1 then var19b = 3;
if var20= 1 then var20b = 1;
if var21= 1 then var21b = 3;
if var22= 1 then var22b = 1;
if var23= 1 then var23b = 3;
if var24= 1 then var24b = 1;
*** les R;
if var01= 2 then var01b = 3;
if var02= 2 then var02b = 1;
if var03= 2 then var03b = 3;
if var04= 2 then var04b = 1;
if var05= 2 then var05b = 3;
if var06= 2 then var06b = 1;
if var07= 2 then var07b = 3;
if var08= 2 then var08b = 1;
if var09= 2 then var09b = 3;
if var10= 2 then var10b = 1;
if var11= 2 then var11b = 3;
if var12= 2 then var12b = 1;
if var13= 2 then var13b = 3;
if var14= 2 then var14b = 1;
if var15= 2 then var15b = 3;
if var16= 2 then var16b = 1;
if var17= 2 then var17b = 3;
if var18= 2 then var18b = 1;
if var19= 2 then var19b = 3;
if var20= 2 then var20b = 1;
if var21= 2 then var21b = 3;
if var22= 2 then var22b = 1;
if var23= 2 then var23b = 3;
if var24= 2 then var24b = 1;
*** les S;
if var01= 4 then var01b = 1;
if var02= 4 then var02b = 3;
if var03= 4 then var03b = 1;
if var04= 4 then var04b = 3;
if var05= 4 then var05b = 1;
if var06= 4 then var06b = 3;
if var07= 4 then var07b = 1;
if var08= 4 then var08b = 3;
if var09= 4 then var09b = 1;
if var10= 4 then var10b = 3;
if var11= 4 then var11b = 1;
if var12= 4 then var12b = 3;
if var13= 4 then var13b = 1;
if var14= 4 then var14b = 3;
if var15= 4 then var15b = 1;
if var16= 4 then var16b = 3;
if var17= 4 then var17b = 1;
if var18= 4 then var18b = 3;
if var19= 4 then var19b = 1;
if var20= 4 then var20b = 3;
if var21= 4 then var21b = 1;
if var22= 4 then var22b = 3;
if var23= 4 then var23b = 1;
if var24= 4 then var24b = 3;
scoresas = var01b+var02b+var03b+var04b+var05b+var06b+var07b+var08b+var09b+var10b+var11b+var12b+
var13b+var14b+var15b+var16b+var17b+var18b+var19b+var20b+var21b+var22b+var23b+var24b;
philippe777- Nombre de messages : 12
Age : 35
Localisation : Canada
Date d'inscription : 23/08/2013
Re: Array sur sas
Tu vas être bloqué pour les impairs dans tes array, car tu ne changes pas le nom de la variable et que tu changes le 2 ou 3 puis le 3 en 2 par exemple.
Il faut te créer une nouvelle variable.
Et d'ailleurs tu peux alléger ces dernières, au lieu d'écrire :
Tu peux t'amuser à le faire avec des macro variables, c'est faisable.
tu fais une boucle, tu repères les variables pairs et impairs, et tu crées tes nouvelles variables.
Pour faciliter la boucle, code les variable var0. en var. .
Bonne continuation!
Il faut te créer une nouvelle variable.
Et d'ailleurs tu peux alléger ces dernières, au lieu d'écrire :
- Code:
array devoir5 {12} var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do i = 1 to 4;
if devoir5[i]= 2 then devoir5[i]=3;
end;
- Code:
array devoir5 var01 var03 var05 var07 var09 var11 var13 var15 var17 var19 var21 var23;
do over devoir5;
if devoir5= 2 then devoir5=3
end;
Tu peux t'amuser à le faire avec des macro variables, c'est faisable.
tu fais une boucle, tu repères les variables pairs et impairs, et tu crées tes nouvelles variables.
Pour faciliter la boucle, code les variable var0. en var. .
Bonne continuation!
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Array sur sas
Merci beaucoup pour cette réponse.
philippe777- Nombre de messages : 12
Age : 35
Localisation : Canada
Date d'inscription : 23/08/2013
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|