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 16/03/2011, 16h26   #1
Invité de passage
 
Femme Lucie Gignac
Responsable d'exploitation informatique
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Lucie Gignac
Localisation : Canada

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 1
Points : 1
Par défaut Comparaison erronée entre deux variables longitudes et latitudes : données dont les décimaux sont différents

J'ai deux coordonnées de latitude et longitude que je dois comparer afin d'extraire celles qui sont différentes.

Le format au départ de la latitude est 9,6 et la longitude de 10,6.

Comme les 3 dernières décimales sont parfois différentes, j'ai essayé de faire un substr (latitude,1,6) afin de garder seulement 3 décimales. Le résultat de fonctionne pas. J'obtiens comme résultat 2 chiffres seulement et parfois seulement 1.

J'ai alors essayé en changant le format au lieu de 9,6 j'ai mis 6,3. Le résultat est correct.

Par la suite j'essaie de comparer les deux variables de latitude et les 2 de longitude et je veux extraire celles qui sont différentes et ça fonctionne pas. Même si elles sont pareilles (avec le format modifié), elles sont extraites.

Je crois que la comparaison se fait sur le champ entier même si j'ai changé le format.

Alors avez-vous une solution à me proposer.

Merci
luciegignac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 16h32   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 701
Points : 1 701
Bonjour ;
Le format permet juste l’affichage et non pas les données stockées.
Tes colonnes à comparer sont t’elles de même formats (numérique ou caractères) ?
C’est sur le put ou l’input qu’il faut agir et non pas le FORMAT.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/03/2011, 16h39   #3
Invité de passage
 
Femme Lucie Gignac
Responsable d'exploitation informatique
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Lucie Gignac
Localisation : Canada

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 1
Points : 1
C'est du numérique format 9,6 et les colonnes sont de même dimension pour la latitude et 10,6 pour longitudes. Peut être que le signe -(moins) cause problème.

Ex: latitude 48,374644 et longitude -73,484746
luciegignac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 16h43   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 701
Points : 1 701
Citation:
Envoyé par luciegignac Voir le message
C'est du numérique format 9,6 et les colonnes sont de même dimension pour la latitude et 10,6 pour longitudes. Peut être que le signe -(moins) cause problème.

Ex: latitude 48,374644 et longitude -73,484746

numérique avec des vérgules dans SAS ?!!! 48.374644 , -73.484746
( avec des points ).
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 16h44   #5
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 701
Points : 1 701
comment procèdes-tu pour la comparaison?
il faut poster le code pour qu'on essaie de t'aider.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 17h19   #6
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Citation:
Envoyé par s_a_m Voir le message
comment procèdes-tu pour la comparaison?
il faut poster le code pour qu'on essaie de t'aider.
Surtout quelques lignes de ton fichier
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 19h04   #7
Invité de passage
 
Femme Lucie Gignac
Responsable d'exploitation informatique
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Lucie Gignac
Localisation : Canada

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 1
Points : 1
Citation:
Envoyé par s_a_m Voir le message
comment procèdes-tu pour la comparaison?
il faut poster le code pour qu'on essaie de t'aider.
Exemple de données :

No Lat1 Latn1 Lon1 Lonn1
1 47.085833 47.128765 -74.993333 -74.676693
2 47.832155 47.832544 -74.025477 -74.025483
3 49.366944 49.36698 -69.984722 -69.98477
4 48.650833 48.65088 -69.475466 -69.38694

Je ne veux pas lire les 3 dernières positions pour faire ma comparaison.
J’ai essayé avec substr (lat1,1,6) et ça me retourne seulement les 2 premières positions. J’ai essayé en changeant le format et ça ne fonctionne pas.

Dans l'exemple, seulement le no. 1 et 4 devrait être sélectionné

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 UN;
  SET GFAUNE.GFTOT1991;
  LAT1=LATDD;
  LON1=LONDD;
  FORMAT LAT1 9.6;
  FORMAT LON1 10.6;
KEEP NOFICHE LAT1 LON1;
PROC SORT; BY NOFICHE; RUN; 
 
DATA DEUX;
  SET NOUVEAU.GFAUNE1991;
  LATN1=LATDD;
  LONN1=LONDD;
  FORMAT LATN1 9.6;
  FORMAT LONN1 10.6;
KEEP NOFICHE LATN1 LONN1;
PROC SORT; BY NOFICHE; RUN; 
 
DATA ASSEMB;
  MERGE UN DEUX;
  BY NOFICHE;
RUN;
 
DATA CORR1991;
  SET ASSEMB;
  IF ((LAT1 NE LATN1) OR (LON1 NE LONN1)) THEN OUTPUT CORR1991;
RUN;
luciegignac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 19h43   #8
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Bonsoir,
Tu peux tester ça

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DATA corr;
input No $ Lat1 $ 3-12 Latn1 $ 13-22 Lon1 $23-33 Lonn1 $34-44;
cards;
1 47,085833 47,128765 -74,993333 -74,676693
2 47,832155 47,832544 -74,025477 -74,025483
3 49,366944 49,36698  -69,984722 -69,98477
4 48,650833 48,65088 -69,475466  -69,38694
;
run;
DATA corr2;
SET corr;
Lat1_num=input(substr(lat1,1,6),numx8.3) ;
Latn1_num=input(substr(Latn1,1,6),numx8.3) ;
Lon1_num=input(substr(Lon1,1,7),numx8.3) ;
Lonn1_num=input(substr(Lonn1,1,7),numx8.3) ;
DROP Lat1  Latn1 Lon1  Lonn1 ;
RENAME Lat1_num= Lat1  Latn1_num=Latn1 Lon1_num=Lon1  Lonn1_num=Lonn1;
run;
DATA corr3;
SET corr2;
IF ((LAT1 NE LATN1) OR (LON1 NE LONN1)) THEN OUTPUT corr3;
RUN;
Bon courage
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 21h35   #9
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Le format ne touche que l'affichage.
La fonction SUBSTR ne gère que des données texte ; une solution est de convertir les données numériques en texte, faire le SUBSTR et revenir en numérique, comme le montre Brice avec les fonctions PUT (numérique --> texte) et INPUT (texte --> numérique).
Mais n'est-il pas plus simple de faire des arrondis avec la fonction ROUND ?
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/03/2011, 21h45   #10
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Oui je pense que c'est plus facile avec round, mais comme d'hab je choisis tjs sans faire exprès la solution la plus complexe.

par contre ici je m'amuse
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 15h25   #11
Invité de passage
 
Femme Lucie Gignac
Responsable d'exploitation informatique
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Lucie Gignac
Localisation : Canada

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 1
Points : 1
Par défaut Merci.

Merci beaucoup j'ai réussi.
luciegignac 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 19h08.


 
 
 
 
Partenaires

Hébergement Web