IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Comparaison erronée entre deux variables longitudes et latitudes : données dont les décimaux sont différents


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Femme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 3
    Points
    3
    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

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    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.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Candidat au Club
    Femme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    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

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    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 ).
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    comment procèdes-tu pour la comparaison?
    il faut poster le code pour qu'on essaie de t'aider.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  6. #6
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    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

  7. #7
    Candidat au Club
    Femme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  8. #8
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Bonsoir,
    Tu peux tester ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    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 ?
    Bon courage.
    Olivier

  10. #10
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    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

  11. #11
    Candidat au Club
    Femme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Merci.
    Merci beaucoup j'ai réussi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison entre deux variables avec if
    Par sbouchaibi dans le forum ASP
    Réponses: 1
    Dernier message: 04/03/2010, 12h27
  2. Comparaison entre deux variables
    Par BHMath76 dans le forum ASP
    Réponses: 5
    Dernier message: 10/10/2008, 11h44
  3. Réponses: 6
    Dernier message: 20/12/2007, 10h00
  4. Comparaison champs entre deux tables
    Par Echizen1 dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/11/2007, 08h31
  5. Comparaison entre deux variables
    Par delavega dans le forum ASP
    Réponses: 8
    Dernier message: 23/11/2006, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo