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 14-03-2012 08:46:52

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

[archive]modifier l'organisation d'une table... pas si simple...

Bonjour

Ce qui est embêtant avec les tables SAS, c’est qu’elles n’ont pas toujours la forme qu’on souhaiterait… L’objet de ce nouveau beau mercredi est de vous proposer un petit exercice au cours duquel vous allez devoir modifier l’organisation d’une table SAS.

Ce matin, je suis allé sur le site abcbourse et j’ai récupéré les cotations des titres au SRD pour le période 1er mars 2012 – 13 mars 2012. A partir du fichier txt téléchargé, j’ai construit une table dont voici un extrait :

Télécharger la table complète

Code:

Obs.        isin         date     cours

   1    AN8068571086    19053    58.990
   2    AN8068571086    19054    58.650
   3    AN8068571086    19057    57.000
   4    AN8068571086    19058    55.850
   5    AN8068571086    19059    56.720
   6    AN8068571086    19060    56.890
   7    AN8068571086    19061    58.480
   8    AN8068571086    19064    56.280
   9    AN8068571086    19065    56.930
  10    FR0000031122    19053     4.411
  11    FR0000031122    19054     4.467
  12    FR0000031122    19057     4.326
  13    FR0000031122    19058     4.120
  14    FR0000031122    19059     4.185
  15    FR0000031122    19060     4.174

J’ai dans ma table trois variables : un identifiant du titre (son ISIN), une date et un cours et je souhaite une autre organisation des données. En fait, je souhaite disposer d’une table dans laquelle je vais avoir, pour chaque date, dans autant de variables que j’ai de titres, les cours de mes différentes actions.

Il y a 234 titres qui sont suivis dans ma table pendant 9 jours : ma nouvelle table doit donc avoir 235 variables (une variable DATE et 234 variables C1 à C234 pour reprendre les cours des différentes actions) et neuf observations.

Voici un extrait de la table attendue :

Code:

Obs.     date      c1       c2       c3        c4        c5

  1     19053    58.99    4.411    111.20    51.780    11.50
  2     19054    58.65    4.467    111.00    52.320    11.70
  3     19057    57.00    4.326    111.80    51.750    11.76
  4     19058    55.85    4.120    111.00    49.865    11.23
  5     19059    56.72    4.185    110.55    50.180    11.20
  6     19060    56.89    4.174    112.50    51.140    11.50
  7     19061    58.48    4.144    114.65    51.220    11.52
  8     19064    56.28    4.154    112.65    51.320    11.56
  9     19065    56.93    4.366    112.25    51.650    11.70

Comme d’habitude, avec SAS, tout est toujours possible et il existe toujours plusieurs façons de faire…

Ici, si vous avez lu attentivement mon ouvrage, vous devez vous dire « je vais utiliser la procédure PROC… pour obtenir le résultat souhaité »
Oubliez cette procédure et progressez dans votre usage de SAS en utilisant le langage base SAS (quelques étapes DATA, peut être des PROC SORT mais rien de plus !) pour produire la table demandée !

Attention : vous risquez d’avoir un problème lié au fait que les données ne sont pas « carrées » : 9 jours de cotation*234 titres = 2106 cotations. La table de départ ne comprend que 2099 observations. Pour certains titres, à certaines dates, on ne dispose pas de cotation : dans votre table produite, il faudra impérativement que ces cotations manquantes apparaissent en valeur manquante.

Si votre programme fonctionne, une simple adaptation de ce programme doit permettre, partant de la table TEST construite ci-dessous :

Code:

data test;
input date titre cours;
cards;
1 1 10
1 2 15
1 3 20
2 1 11
2 3 21
3 2 16
3 3 22
;

D’obtenir le résultat ci-après :

Code:

Obs.   date    C1    C2    C3

  1      1     10    15    20
  2      2     11     .    21
  3      3      .    16    22

Amusez vous bien !

Ce sujet est maintenant archivé - seuls les utilisateurs inscrits de www.sas-sr.com peuvent consulter l'intégralité du sujet
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