Annonce

Bienvenue sur le site support de mes ouvrages d'introduction à SAS

La 4ème édition de mon ouvrage est disponible depuis le 11 avril 2019 !

Où trouver cet ouvrage ?


#1 04-03-2015 08:16:27

SAS-SR
Administrateur
Lieu: Université d'Orléans
Date d'inscription: 01-09-2008
Site web

[archive]Tableaux multidimensionnels (ARRAY) et fonctions statistiques

Il m'est arrivé une drôle de chose cette semaine... je me suis retrouvé coincé avec un problème lié aux ARRAY...(pas longtemps, je vous rassure !)

je vous explique : j'avais une table relativement compliquée à construire et au cours de ce travail de construction de table, je me suis retrouvé avec un tableau multidimensionnel (i , j) (avec i=7 et j=300) (et donc 2100 variables X1-x2100). Les modalités prises par mes 2100 variables n'avaient qu'une importance secondaire et tout ce que je souhaitais, c'était en fait calculer 7 variances, une variance par valeur de i.

J'ai donc demandé l'exécution d'un programme équivalent à celui-ci :

Code:

data test2;
   set test;
   array x {7,300} ;
   array v{7};
   do i=1 to 7;
     v{i}=var(of x{i,*});
   end;

et ce programme génère une erreur de syntaxe :

Code:

2185       v{i}=var(of x{i,*});
                           -
                           386
                           200
                           76
ERROR 386-185: Expecting an arithmetic expression.

ERROR 200-322: The symbol is not recognized and will be ignored.

ERROR 76-322: Syntax error, statement will be ignored.

hum... c'est embêtant...

Une instruction ARRAY regroupe des variables dans un tableau que, dans certaines circonstances, vous pouvez utiliser comme une liste de variables. On peut ainsi utiliser le nom d'un tableau dans les fonctions statistiques - vous trouverez un exemple dans la solution de ce problème des beaux mercredis

notez dans la solution les instructions suivantes :

Code:

   array note{*} _numeric_;
...
   temp=max(of note{*});

J'ai tenté d'adapter cette solution au cas d'un tableau à deux dimensions... ça ne fonctionne pas... la question est donc : "Comme faire pour calculer mes sept variances ?"

il existe bien une solution "de brute" :

Code:

v1=var(of x1-x300);
v2=var(of x301-x600);
etc.

c'est indigne et je souhaite disposer d'une solution beaucoup plus élégante...

Le programme suivant crée la table sur laquelle vous allez pouvoir tenter de répondre à la question :

Code:

data test (drop=i j k);
   call streaminit(12345);
   array x{4,10};
   do i=1 to 5 ;
      do j=1 to 4;
         do k=1 to 10;
            x{j,k}=rand('normal')*j;
         end;
      end;
   output;
   end;
run;

Vous disposez au moyen de programme d'une table de 5 observations et 40 variables x1-X40.

Je souhaite à la fin disposer de 4 variables V1-V4 qui mesureront les variances des valeurs des variables Xx associées à chaque valeur de i. Votre programme doit commencer par les instructions suivantes :

Code:

data test2;
   set test;
   array x{4,10};
   array v{4};
...

amusez vous bien

Ce sujet est maintenant archivé - seuls les utilisateurs inscrits de www.sas-sr.com peuvent consulter l'intégralité du sujet et les programmes qui répondent à la question posée.
pour vous identifier, suivez ce lien
pour vous inscrire, suivez ce lien

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr
Flux RSS