Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
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 23/09/2011, 18h40   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Par défaut Calcul du semestre à partir d'une date

Bonsoir,

Je cherche à calculer le semestre à partir d'une date.

Mais je n'arrive pas à trouver la fonction sas correspondante.

Pourriez vous m'aider ?
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2011, 14h04   #2
Membre éprouvé
 
Homme Rémi Bousquet
responsable adjoint service stat
Inscription : mars 2009
Messages : 334
Détails du profil
Informations personnelles :
Nom : Homme Rémi Bousquet
Âge : 35
Localisation : France

Informations professionnelles :
Activité : responsable adjoint service stat
Secteur : Finance

Informations forums :
Inscription : mars 2009
Messages : 334
Points : 464
Points : 464
A ma connaissance,
SAS propose des formats qui permettent de retrouver directement le trimestre, mais pas le semestre, cf exemples :
Code :
1
2
3
4
5
6
DATA test ;
    date           = "01jan2010"d ;
    year_Q_quarter = put(date, yyq.) ;
    year_quarter   = put(date, yyqn.) ;
    putlog _all_ ;
run ;
Il doit même y avoir un format qtr. qui donne le trimestre sans l'année, mais à partir de la v9.2 seulement (et oui, je suis en v9.1.3 ...)

Pour avoir le semestre, il faudra donc feinter. Proposition, en partant de la fonction month() :
Code :
1
2
3
4
5
6
DATA test ;
    date           = "01jan2010"d ;
    month          = month(date) ;
    semestre       = 1 + (month(date) > 6) ;
    putlog _all_ ;
run ;
Tu peux te faire plaisir en faisante une macro %semestre() si tu en fais un usage fréquent :
Code :
1
2
3
4
5
6
7
8
%macro semestre(date) ;
    1 + (month(&date.)  > 6 )
%mend ;
DATA test ;
    date           = "01jan2010"d ;
    semestre       = %semestre(date) ;
    putlog _all_ ;
run ;
Il doit être possible de créer une fonction, mais ça j'ai jamais fait
RemiBousquet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/09/2011, 09h56   #3
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 145
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 145
Points : 1 763
Points : 1 763
Bonjour,

Citation:
Je cherche à calculer le semestre à partir d'une date.
il ya plusieurs comprehensions possibles. Est ce qu'il s'agit de renvoyer le semestre de l'annee en cours?(0 ou 1 suivant qu'on est avant le 30 juin ou apres)?


essaye la fonction intck avec l'interval semiyear.

http://dept.kent.edu/sas/lgref/z0212868.htm

Code :
1
2
3
4
5
6
7
8
9
DATA test;
format date date9.;
date=15362;
semester=intck('semiyear',intnx('year',date,0,"b"),date);
output;
date=15552;
semester=intck('semiyear',intnx('year',date,0,"b"),date);
output;
run;
Avec intnx je recupere le debut de l'annee
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h41   #4
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Bonjour,

Manoutz, ce que je cherche est effectivement une fonction qui me permettrait de retourner le trimestre T1ou Q1. La fonction

Code :
year_Q_quarter = put(date, yyq.) ;
que Remi m'indiquait fonctionne très bien.

Par contre pour le semestre je n'ai pas trouvé.

J'essaye ton bout de code.
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h53   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
c'est exactement ce que je voulais en ajoutant +1 comme dans le code de Rémi.

Rémi a écrit :
Citation:
Il doit être possible de créer une fonction, mais ça j'ai jamais fait
Comment faire pour créer cette fonction que je pourrais rappeler quand je voudrais ?
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h59   #6
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
si tu as la 9.2/9.3 tu regardes la proc FCMP et son cadre d'utilisation.
__________________
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 27/09/2011, 11h08   #7
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 145
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 145
Points : 1 763
Points : 1 763
ou passer par une macro fonction, tout simplement...

D'ailleurs, tu dois pouvoir parameter si tuveux calculer sur le trimestre ou le semestre, en utilisant (et en appliquant au trimestre, selon) le code que je t'ai fourni
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h36.


 
 
 
 
Partenaires

Hébergement Web