* CHAQUE instruction se termine par un point-virgule => ; * un commentaire commence par une étoile '*' ; /* ou est encadré par /* */ */; *********************************************************; *****************************************************************; * Importation des données contenues dans une feuille excel ; * run demande l'exécution de la PROCédure ; * Sélectionner les 4 lignes et Faire F8 pour exécuter ces lignes ; * Puis VERIFIER le LOG et Enfin analyser vos RESULTS (onglets) ; *****************************************************************; Proc Import OUT=in0 Datafile= "D:\travail_sync\Cours\Cas\Creative\Creative\BDD_Mission_Creative.xls" DBMS=EXCEL REPLACE; run; ***************************************************************; * des titres et des footnotes pour personnaliser vos sorties ; * un titre est actif tant qu'il n'est pas remplacé par un autre; * J(ustify)= L(eft) ou R(ight) ; * H(eight)= pour la taille de votre police ; ***************************************************************; Title1 J=L 'Mission CREATIVE'; Footnote1 J=L H=1 'Master MARKETING Dauphine 2012' J=R ''; ************************************************************; * une étape DATA manipule les données ; * elle se termine à la rencontre de la première PROC ou RUN ; * Les données sont créées dans le tableau ; * ou proviennent d'un autre tableau (avec Set) ici in0 ; ************************************************************; Data in ; set in0; * Quest Q00 age Q0101-Q0107 Q0201-Q0210 Q0301-Q0308 Q0401-Q0409 Q05 Q06 Q07-Q14 Q1501-Q1506 Q16-Q19 Q20 Q21 Q22-Q33 Q40-Q41 Q4201-Q4207 Q43 Q44-Q45 Q50-Q53; *...........................................................; * On peut manipuler les données, faire des tests ; *...........................................................; if Q43=2 then IVFnac=1; else IVFnac=0; * création de deux variables Test2 et Test3 ; *-------------------------------------------; if Q00=1 then Test=1; else if Q00=3 then Test=3; if Q00=1 then Test2=1; else if Q00=2 then Test2=2; if Q00=2 then Test3=2; else if Q00=3 then Test3=3; * calcul du nombre d'équipements possédés ; *-----------------------------------------; Nb_App = Q0101+ Q0102+Q0103+Q0104+ Q0105+ Q0106+Q0107 ; *...........................................................; * un LABEL correspond au libellé de la variable ; * il est mis en fin d'une étape Data ; * !!! ne pas utiliser d APOSTROPHE ; *...........................................................; Label Q00= 'questionnaire' Q0101= 'Chaine hi-fi' Q0102= 'Baladeur numerique' Q0103= 'Station accueil pour baladeur' Q0104= 'Ordinateur de bureau' Q0105= 'Ordinateur portable' Q0106= 'Webcam' Q0107= 'Haut-parleurs ordinateur' Q0201= 'Archos' Q0202= 'Apple' Q0203= 'Ipod' Q0204= 'Creative' Q0205= 'Mpman' Q0206= 'Neonumeric' Q0207= 'Philips' Q0208= 'Samsung' Q0209= 'Sony' Q0210= 'Autres marques' Q0301= 'Archos' Q0302= 'Apple' Q0303= 'Creative' Q0304= 'Mpman' Q0305= 'Neonumeric' Q0306= 'Philips' Q0307= 'Samsung' Q0308= 'Sony' Q0401= 'Archos' Q0402= 'Apple' Q0403= 'Creative' Q0404= 'Mpman' Q0405= 'Neonumeric' Q0406= 'Philips' Q0407= 'Samsung' Q0408= 'Sony' Q0409= 'Autres marques' Q05= 'Intention achat 3 prochains mois' Q06= 'Raison intention achat nouveau baladeur' Q07= 'Archos' Q08= 'Apple' Q09= 'Creative' Q10= 'Mpman' Q11= 'Neonumeric' Q12= 'Philips' Q13= 'Samsung' Q14= 'Sony' Q1501= 'Commerce independant' Q1502= 'Chaine de magasins specialises' Q1503= 'Hypermarche' Q1504= 'Internet' Q1505= 'Vente par correspondance' Q1506= 'Ne sais pas' Q16= 'Darty' Q17= 'Fnac' Q18= 'Carrefour' Q19= 'Pixmania' Q20= 'Possession du baladeur ZEN' Q21= 'Note satisfaction baladeur ZEN' Q22= 'Le baladeur ZEN me semble etre un baladeur design' Q23= 'Le baladeur ZEN me semble etre un baladeur qui comporte les dernieres innovations technologiques' Q24= 'Le baladeur ZEN me semble etre un baladeur simple a utiliser' Q25= 'Le baladeur ZEN me semble etre un baladeur qui dispose d un bon son' Q26= 'Le baladeur ZEN me semble etre un baladeur de qualite' Q27= 'La marque CREATIVE me semble etre une marque innovante' Q28= 'La marque CREATIVE me semble etre une marque chere' Q29= 'La marque CREATIVE me semble etre une marque renommee' Q30= 'La marque CREATIVE me semble etre une marque que je recommanderai a mes proches' Q31= 'La marque CREATIVE me semble etre une marque qui me permettrait d etre a la mode' Q32= 'La marque CREATIVE me semble etre une marque qui repond a mes besoins' Q33= 'La marque CREATIVE me semble etre une marque en laquelle j ai confiance' Q40= 'Intention achat produit CREATIVE' Q41= 'Intention achat baladeur ZEN' Q4201= 'La mention des differentes fonctionnalites du produit' Q4202= 'La caution Fnac' Q4203= 'La description des caracteristiques du produit' Q4204= 'La photo du produit' Q4205= 'L esthetisme de la publicite' Q4206= 'La presence du logo de Creative' Q4207= 'La mention du prix' Q43= 'Enseigne achat baladeur ZEN' Q44= 'Client FNAC' Q45= 'Carte de fidelite FNAC' Q50= 'Temps moyen journalier sur Internet' Q51= 'Temps moyen journalier en transports en commun et/ou marche a pieds' Q52= 'Activite' Q53= 'Departement' Nb_App = 'Nombre d appareils' ; run; ***************************************************************; * un FORMAT est une PROCédure ; * il correspond au libelle des MODALITES d une variable ; * un format est créé une fois pour toute pour les variables qui; * existent puis utilisé dans les procédures ; * VALUE nom_format 1='modalité 1' ..... puis le point virgule ; * possibilité de faire plusieurs formats pour la même variable ; ***************************************************************; proc Format; value FQ00X 1='Ech 1' 2='Ech 2' 3='Ech 3'; value FAGEX 1='<15 ans' 2='15-24 ans' 3 = '25-35 ans' 4='>35 ans'; value FAGEbX low-2='<25 ans' 3-high = '=> 25 ans'; value FouiX 0='Non' 1='Oui'; value FouinspX 1='Oui' 0 ='Non' 2= 'Ne sais pas'; value FQ06X 1='Pour remplacer celui que je possede actuellement' 2='Pour avoir un deuxieme baladeur en complement' 3='Autres'; value FaccordX 5='Tout a fait daccord' 4='Plutot daccord' 3='Ni daccord Ni pas daccord' 2='Plutot pas daccord' 1='Pas du tout daccord'; value FQ43X 1='Darty' 2='Fnac' 3='Carrefour' 4='Pixmania' 5='Autres' 6='Ne sais pas'; value FQ50X 1='0h' 2='Moins de 1/2h' 3='Entre 1/2h et 1h' 4='Entre 1h et 1h30' 5='Entre 1h30 et 2h' 6='Plus de 2h'; value FQ51X 1='0h' 2='Moins de 1/2h' 3='Entre 1/2h et 1h' 4='Entre 1h et 1h30' 5='Entre 1h30 et 2h' 6='Plus de 2h'; value FQ52X 1='Lyceen/Etudiant' 2='Actif' 3='Inactif'; value FQ52bX 1='Inactif' 2='Actif' 3='Inactif'; run; ********************************************; * impression pour verifier la bonne lecture ; * obs=10 pour limiter aux 10 premières obs ; ********************************************; title2 H=2 'Impression pour vérification'; Proc print data = in (obs=10); var Quest Q00 age Q0101-Q0107 Q0201-Q0210 ; run; ********************************************************; * FREQ pour faire un tableau de fréquence simple ; * ou tableau croise ici avec demande du Chi2 avec chisq ; * !!! au point derrière le format utilisé ; ********************************************************; title2 H=2 'Fréquences simples'; Proc Freq data = in ; table age q52 age*q52; format age fagex. q52 fQ52x.; run ; title2 H=2 'Tableau croisé avec Chi2'; Proc Freq data = in ; table age*q52 / chisq; format age fagex. q52 fQ52x.; run ; title2 H=2 'Tableau croisé plus lisible'; Proc Freq data = in ; table age*q52 / nocol nopercent chisq; /* sans les % colonne et % total*/ format age fagex. q52 fQ52bx.; run ; ********************************************************; * TABULATE pour faire un tableau de synthèse ; * CLASS pour les variables de classification ; * VAR pour les variables calculées ; ********************************************************; title2 H=2 'Cherté perçue de la marque selon l échantillon'; Proc Tabulate data=in ; Class Q00 ; Var Q28 ; Table Q00, /* lignes */ Q28 /* colonnes après la virgule */ * (mean std) /* statistiques après l etoile moy et écart-type*/ *F=6.2 ; /* F pour Format 6 chiffres dont 2 décimales */ format Q00 FQ00x. ; run ; *******************************************************************; * UNIVARIATE pour analyser une distribution ; * Histogram pour un histogramme, Normal ajoute une loi normale ; * Nombreuses options ici demander les valeurs pour chaque modalité ; *******************************************************************; title2 H=2 'Distribution'; Proc Univariate data=in normal; /* demande du test de normalité */ Var Nb_App ; histogram Nb_App / Normal (mu=est sigma=est) midpoints = 1 to 7 by 1; probplot nb_App / Normal (mu=est sigma=est); run ; title2 H=2 'Comparer les distributions selon l age'; Proc Univariate data=in normal; /* demande du test de normalité */ Class Age ; var Nb_App ; histogram Nb_App / Normal midpoints = 1 to 7 by 1; format Age FagebX. ; run; * http://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_univariate_sect013.htm ; *******************************************************************; * SORT trie les individus selon une clé "by" ; * Nécessaire pour les analyses par sous-groupe ici selon l'age ; *******************************************************************; Proc sort data=in ; by age ; run ; *******************************************************************; * BOXPLOT pour une boite à moustaches ; * étude des valeurs aberrantes (outliers) ; *******************************************************************; Proc boxplot data=in; plot nb_App*Age / boxstyle = SCHEMATICID cboxes = CX153e7e cboxfill = CX1589ff; id quest ; format age Fagebx. ; run; *******************************************************************; * MEANS pour calcul des statistiques simples ; * OUTPUT pour créer un nouveau DATA (data_mean) avec ces données ; *******************************************************************; Proc Means data=in; Class age ; /* traitement pour chaque classe d'âge */ Var nb_App; Format age Fagebx.; /* pour que l'étiquette figure dans les données en texte */; Output out=data_mean mean= m std= s n= n ; run; Proc Print data=data_mean ; where _type_ = 1 ; /* possibilité de filtrer les données dans une proc */ run ;