[Résolu] Gestion des doublons

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Etienne Conte
Messages : 2
Enregistré le : 26 Juin 2019, 19:57

[Résolu] Gestion des doublons

Messagepar Etienne Conte » 27 Juin 2019, 11:07

Bonjour à tous,

J'ai un problème que je n'arrive pas à régler. J'ai une base de données géoréférencée avec plusieurs points qui ont les mêmes coordonnées. Mon but est de créer un graphe afin de faire un test d'autocorrélation spatiale (avec plusieurs méthodes notamment la triangulation de Delaunay). Le problème est que la création d'un graphe nécessite justement qu'il n'y est aucun point au même endroit. J'ai donc créé deux sous tableaux : un qui contient tous les points distincts et un autre qui contient tous les points qui ont un ou des points au même endroit. Je peux réaliser mon graphe sur le premier tableau sans problème mais ça m'embête de perdre les informations du deuxième tableau (plus de 1 000 observations).

Pour illustrer la suite, voici la structure du haut du tableau des points en doublon :

Code : Tout sélectionner

head(lignesdup)
        Lat     Long   valFon 1
4  48.87707 2.313122    51000 1
9  48.86641 2.353682  1840000 1
10 48.86641 2.353682  1840000 1
14 48.86651 2.331097   512000 1
19 48.87550 2.312343 32760000 1
20 48.87550 2.312343 32760000 1


Lat et Long sont les coordonnées géographiques. J'aimerai créer un second tableau avec une instruction du type : pour les lignes du tableau où les valeurs de Lat ET Long sont les mêmes, créer un seul point en faisant la moyenne des valeurs de valFon des points précédents. Je ne sais pas du tout comment m'y prendre donc merci beaucoup si vous pouvez m'aider.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Gestion des doublons

Messagepar Mickael Canouil » 27 Juin 2019, 11:23

Bonjour,

une solution consiste à agréger/résumé l'information de duplication (ou plus):
  • Approche tidyverse:

    Code : Tout sélectionner

    lignesdup <- read.table(header = TRUE, text = "        Lat     Long   valFon 1
    4  48.87707 2.313122    51000 1
    9  48.86641 2.353682  1840000 1
    10 48.86641 2.353682  1840000 1
    14 48.86651 2.331097   512000 1
    19 48.87550 2.312343 32760000 1
    20 48.87550 2.312343 32760000 1")

    library(tidyverse)

    lignesdup %>%
      dplyr::group_by(Lat, Long) %>%
      dplyr::summarise(n = dplyr::n(), mean_valFon = stats::mean(valFon)) %>%
      dplyr::ungroup()
    #> # A tibble: 4 x 4
    #>     Lat  Long     n mean_valFon
    #>   <dbl> <dbl> <int>       <dbl>
    #> 1  48.9  2.35     2     1840000
    #> 2  48.9  2.33     1      512000
    #> 3  48.9  2.31     2    32760000
    #> 4  48.9  2.31     1       51000

  • Approche "base":

    Code : Tout sélectionner

    lignesdup <- read.table(header = TRUE, text = "        Lat     Long   valFon 1
    4  48.87707 2.313122    51000 1
    9  48.86641 2.353682  1840000 1
    10 48.86641 2.353682  1840000 1
    14 48.86651 2.331097   512000 1
    19 48.87550 2.312343 32760000 1
    20 48.87550 2.312343 32760000 1")

    stats::aggregate(valFon ~ Lat * Long, data = lignesdup, FUN = stats::mean)
    #>        Lat     Long   valFon
    #> 1 48.87550 2.312343 32760000
    #> 2 48.87707 2.313122    51000
    #> 3 48.86651 2.331097   512000
    #> 4 48.86641 2.353682  1840000

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Etienne Conte
Messages : 2
Enregistré le : 26 Juin 2019, 19:57

Re: Gestion des doublons

Messagepar Etienne Conte » 27 Juin 2019, 12:09

Ça marche parfaitement, merci beaucoup !

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: [Résolu] Gestion des doublons

Messagepar Mickael Canouil » 27 Juin 2019, 12:16

Un petit "[Résolu]" dans le titre du sujet (message initial) pour faire savoir que c'est bon ;)
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité