Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

date

Envoyé par cha 
Ce forum est en lecture seule. C'est une situation temporaire. Réessayez plus tard.
cha
date
08 décembre 2011, 10:30
Bonjour,

Je suis bloquée sous SAS au niveau des dates.
Je souhaire récupérer une date, le samedi de la semaine dernière à partir de la date du jour.
Par exemple, on est le 08/12/2011, je souhaite récupérer le 03/12/11.

J'ai utilisé :
Call symputx('date',input("&annee.w&semdern",weekv5.)) ;

mais cela ne marche pas.

Merci pour votre aide,
Re: date
08 décembre 2011, 14:54
Bonjour,

Data test ;
Attrib Date1
Format= DDMMYY10. ;
Date1=Today() - Weekday(today()) + 0;
run;


Today() : Récupère la date du jour
Weekday () : récupère le numéro de jour (dans la semaine) .

Explication du process

Sachant que le dimanche est le jour 1 de la semaine (en SAS, je précise !!!)
Le samedi est le jour 0 ou 7 si l'on veut le dernier samedi ou le prochain samedi.


Bonne journée et bonne méditation.

Erwan G.
cha
Re: date
08 décembre 2011, 18:38
Super, merci!!!
cha
liste
03 février 2012, 10:39
Salut à tous,

Je suis bloquée sur un programme SAS!!!
J'ai 1 table avec 1 ligne par sinistre et l'ensemble des garanties attachées aux sinistres
exemple :
sin 01 DDE/BDG
sin 02 DOM/FA
sin03 FA
sin04 BDG/FA

Je veux conserver uniquement les sinistres ou il n'y a pas la présence de certaines garanties.
Exemple : supprimer les sinistres avec une garantie FA ou BDG seule
Je veux supprimer uniquement les sin03 et sin04 car je trouve les garanties FA ou BDG uniquement
Je veux conserver les sinistres 01 et 02 car j'ai une autre garantie.

Je ne peux donc utiliser l'index.
J'ai pensé à créer une liste de toutes les variables à conserver mais je suis bloquée après.

Merci pour votre aide,
Erwan G.
Re: liste
03 février 2012, 12:26
Bonjour,

Si je comprends bien c'est un programme sous conditions...

Ce que je te propose de faire est une Proc Sql où tu mets des filtres

Ex :

Proc sql ;
Select * from NOMTABLE
Where NOM COLONNES IN (values1, values2,....) ;
quit;

Ou NOMTABLE comme son nom l'indique est le nom de ta table
Ou NOMCOLONNES est le nom de la colonne (Ex???INISTRES)
Ou values1, values2 sont les sinistres que tu veux gardés (exemple: DBE/BDG, DOM/FA)
Attention pour ce dernier, il faut que tu ais en tête le type de variable...pour soit mettre des apostrophes ou des guillemets...

Bonne journée,

Erwan
cha
Re: liste
03 février 2012, 15:30
merci pour ta réponse.

Mais le problème c'est que j'ai énormément de modalités pour la variable "GAR": DBE/BDG, DOM/FA... qui peuvent s'écrire dans des ordres différents en plus donc je voulais éviter de les écrire à la mano et automatiser mon programme.

J'aimerai trouver une solution pour conserver les lignes ou j'ai au moins la présence d'une variable dans la liste A.
exemple :
liste A : BDG DOM DDE BDM

Je veux conserver toutes les lignes ou j'ai au moins la présence dans la variable "GAR", un des champs de la liste.
Je n'arrive pas à utiliser l'index avec la liste.

Bon WE
Re: liste
04 février 2012, 14:55
Salut,

Pour faire simple, si ta variable à analyser est GAR :

Proc sql;

Select * from ta_table
where
gar like '%BDG%'
or
gar like '%DOM%'
or
gar like '%DDE%'
or
gar like '%BDM%'
;

Quit;


Tu peux après créer une macro pour automatiser avec en entrée les chaines recherchées.
Mais ceci est une autre histoire.................

A+
cha
Re: liste
06 février 2012, 09:21
Merci je pense que ca va m'aider avec une macro en plus!