"RechercheV" comme sur Excel

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

Kévin Dubois
Messages : 97
Enregistré le : 25 Mar 2019, 12:07

"RechercheV" comme sur Excel

Messagepar Kévin Dubois » 26 Mar 2019, 20:10

Bonjour à tous,

Je rencontre un problème avec une base de donnée nommée "data" de 24 000 données, qui contient de nombreuses catégories de POI par communes (dont les casernes de pompiers; "fire_station" in english) :

https://zupimages.net/up/19/13/eolg.jpg

Je souhaiterais récupérer les communes qui n'ont pas de casernes de pompier, pour arriver au final à avoir, dans le tableau, une colonne avec les catégories "Absence" et "Presence" pour chaque commune, suivant la présence ou non des casernes.

Etant débutant, voiçi les étapes que j'ai suivis :

Récupération des communes qui ont des casernes de pompiers :

caserne = subset(data, fclass == "fire_station", select = c(fclass, NOM_COM))
com_avec_caserne = caserne$NOM_COM

Récupération de toute les communes :

toute_les_com = data$NOM_COM

Croiser les 2 tableaux pour récupérer les communes qui n'ont pas de casernes :

com_sans_caserne = setdiff(toute_les_com, com_avec_caserne)

Création d'un tableau avec la colonne "ETAT" qui possède les arguments "presence","abscence", en fonction de la présence ou pas de caserne dans la commune

Final = data.frame(toute_les_commune, ETAT =ifelse(toute_les_commune%in%com_avec_caserne,"presence","abscence"))

J'arrive à ce résultat, tout va bien, la table contient le bon nombre de valeurs :

https://zupimages.net/up/19/13/5osw.jpg

Malheureusement, je voudrais maintenant pouvoir faire un espèce de "rechercheV" comme avec Excel, pour attribuer le champ ETAT de final à data

J'utilise cette formule :

Tableau_Fin = merge(Final, data, by.x = "Final$Communes", by.y = "data$NOM_COM", all.x = TRUE)

Cependant, cette formule que crée un tableau de plus de 33 millions de données, après un calcul de 30 minutes.

Bref, surement qu'il y a une méthode plus rapide et simple pour arriver à mes fins, et je suis preneurs :)

Merci à vous

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: "RechercheV" comme sur Excel

Messagepar Pierre-Yves Berrard » 26 Mar 2019, 20:19

Bonjour,

Code : Tout sélectionner

merge(Final, data, by.x = "Communes", by.y = "NOM_COM", all.x = TRUE)
PY

Kévin Dubois
Messages : 97
Enregistré le : 25 Mar 2019, 12:07

Re: "RechercheV" comme sur Excel

Messagepar Kévin Dubois » 26 Mar 2019, 21:07

Pierre-Yves Berrard a écrit :Bonjour,

Code : Tout sélectionner

merge(Final, data, by.x = "Communes", by.y = "NOM_COM", all.x = TRUE)


Merci à vous, malheureusement cela me renvoi la même table de 33M de données :/

Kévin Dubois
Messages : 97
Enregistré le : 25 Mar 2019, 12:07

Re: "RechercheV" comme sur Excel

Messagepar Kévin Dubois » 26 Mar 2019, 21:24

Je connais une formule en programmation, mais je ne connais pas la syntaxe en R. Une syntaxe du genre :

Etat = Si "fclass == "fire_station"" then "Presence" else "Absence"

Avec mes faibles connaissances, j'imagine que étant donné qu'il y a plusieurs fois un même nom de commune, cela va me calculer ligne par ligne, et m'afficher ceci :

https://zupimages.net/up/19/13/n1do.jpg

Or, moi je voudrais plutôt qu'il me "groupe" les communes, pour m'afficher comme cela :

https://www.zupimages.net/up/19/13/w533.jpg

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

Re: "RechercheV" comme sur Excel

Messagepar Mickael Canouil » 27 Mar 2019, 09:08

Bonjour,

La réponse de Pierre-Yves et les subsets que vous utilisez déjà sont les outils dont vous avez besoin (éventuellement la fonction order).
Dans un premier temps, je vous suggère de lire la documentation des fonctions, notamment celle de merge.

Code : Tout sélectionner

?merge


Si vous souhaitez une aide plus précise:
Qu'est-ce qu'un code reproductible ?
Comment insérer des données dans un message ?

Cordialement,
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é