Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2011, 11h06   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 1
Points : 1
Par défaut Convertir et soustraire des dates

Bonjour,

Je suis un débutant en SAS et les dates me posent des problèmes.

J'ai une variable qui s'appelle Q88A et qui contient des valeurs comme 200706, 200408, etc.

Je suis parvenu a créer une nouvelle variable appellée "annee" grâce au code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DATA Modu_2009B;
SET wsasuser.eft_2009b (keep= cw_all sex age Q88A Q100 Q102 Q79 Q98);
WHERE 14<age<35 AND Q79=3 AND 0<Q98<888888;
annee = Q98;
informat annee yymmn6.;
run;
 
DATA modu_2009BB;
SET modu_2009B (keep= cw_all sex age Q88A Q98 Q79 annee);
WHERE 14<age<35 AND Q79=3 AND 0<Q98<888888;
numdate=annee;
chardate=put(numdate,z6.);
sasdate=input(chardate, yymmn6.);
run;
Ensuite j'aimerais soustraire ces dates à 2009. ex: 2009-200706, ce qui me donnerai 1 an et 6 mois.

Quelqu'un pourrait-il m'aider?

Jean-François
jean003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 12h02   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Comme tu l'as vu, les dates sont des numériques : le nombre de jours depuis 1/1/1960.
il te reste simplement à créer une date en 2009 pour pouvoir soustraire les deux dates. Je te propose de créer dans ton étape DATA un champ de valeur constante : ref = MDY ( 12,31,2009) ;

tu pourras donc soustraire : diff = ref - sasdate ;
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 12h14   #3
Membre éclairé
 
Avatar de Filippo
 
Homme Philippe
Statisticien
Inscription : mai 2004
Messages : 654
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 38
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Statisticien

Informations forums :
Inscription : mai 2004
Messages : 654
Points : 396
Points : 396
Bonjour,
oui, le plus simple c'est à mon avis d'extraire le mois et l'année pour créer une date SAS avec mdy. Ensuite tu peux faire des opérations sur ces dates SAS.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DATA temp;
   input Q98 $;
   cards;
200706
200708
200408
 
;
 
DATA temp;
	SET temp;
 
	length annee $ 4;
	length mois $ 2;
 
	annee=substr(Q98,1,4);
	mois=substr(Q98,5,2);
 
	format MyDate ddmmyy8.;
	format MyRef ddmmyy8.;
 
	MyDate=mdy(mois,1,annee);
 
	MyRef=mdy(1,1,2009);
 
	MyDelta=MyRef-MyDate;
run;
MyDelta donne le nombre de jours entre MyRef et MyDate.
__________________
"Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"
Filippo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 15h45   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 1
Points : 1
Bonjour,

Vous avez répondu à ma question et me voici en train de jongler avec mes dates.

Merci beaucoup!

@ la prochaine!

Jean-François
jean003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h19.


 
 
 
 
Partenaires

Hébergement Web