Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > R
R Forum d'entraide sur la programmation en langage R
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/09/2010, 15h58   #1
Jane Home
Candidat au titre de Membre du Club
 
Inscription : février 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 46
Points : 13
Points : 13
Par défaut Enlever les valeurs de deux colonnes en supprimant les doublons de l'une

Bonjour,

J'ai un petit problème.
On va dire que je recupère d'une table mysql un dataframe avec deux colonnes.
J'aimerai éliminer les doublons de la première colonne et garder les valeurs de val2 associées.
J'ai pensé à faire un unique sur val1 et unique sur val2 (préalablement convertis en vecteur) mais ça va bugger pour le cas ou val=2 . Je vais me retrouver avec val1 et val2 de taille différente...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
val1      val2
1          2
1          2
1          2
2          2
2          2
3          7
3          7
4          3
4          3

Et j'aimerai avoir :

val1  val2
1       2
2       2
3       7
4       3
Si vous avez une idée, je débute en R, j'ai regardé un peu la doc et je vais continué mais si quelqu'un peut m'éviter de perdre du temps à chercher.

Merci!
Jane Home est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2010, 10h00   #2
A. D.
Modératrice
 
Femme Aline Deschamps
Chargée de Statistiques
Inscription : juin 2010
Messages : 466
Détails du profil
Informations personnelles :
Nom : Femme Aline Deschamps
Âge : 25
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chargée de Statistiques
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2010
Messages : 466
Points : 1 317
Points : 1 317
Envoyer un message via Skype™ à A. D.
Bonjour,

Je pense que le code suivant fera l'affaire (si j'ai bien compris le problème ^^) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
val1<-c(1,1,1,2,2,3,3,4,4)
val2<-c(2,2,2,2,2,7,7,3,3)
V<-cbind(val1,val2)

unique(V)

     val1 val2
[1,]    1    2
[2,]    2    2
[3,]    3    7
[4,]    4    3
Bonne journée

A.D.
A. D. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 17h44   #3
B65AcR
Candidat au titre de Membre du Club
 
Homme
touristepationné
Inscription : janvier 2012
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : touristepationné
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 44
Points : 14
Points : 14
Bonjour,

Petite précision concernant ce vieux sujet, comment supprimer les doublons de la 1ère colonne sans tenir compte des valeurs de la 2ème colonne?
Code :
1
2
3
val1<-c(1,1,1,2,2,3,3,4,4)
val2<-c(2,4,6,1,2,7,34,4,3)
V<-cbind(val1,val2)
Et j'aimerais avoir :

Code :
1
2
3
4
5
val1  val2
1       2
2       1
3       7
4       3
Je n'arrive pas à utiliser "unique(V$val1)", même après avoir converti V en list.
R me répond "NULL". Il parle de moi?

Comment faire?
B65AcR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 21h48   #4
vchouraki
Membre éclairé
 
Vincent Chouraki
Inscription : juillet 2010
Messages : 137
Détails du profil
Informations personnelles :
Nom : Vincent Chouraki
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2010
Messages : 137
Points : 363
Points : 363
Bonjour,

Vous n'auriez pas fait une erreur dans le résultat que vous voulez obtenir? Si vous voulez sélectionner la première occurence d'une valeur :

Code :
V[! duplicated(V[, 1]), ]
HTH

Vincent
vchouraki est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 06/01/2013, 10h59   #5
B65AcR
Candidat au titre de Membre du Club
 
Homme
touristepationné
Inscription : janvier 2012
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : touristepationné
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 44
Points : 14
Points : 14
Merci!

Citation:
Vous n'auriez pas fait une erreur dans le résultat que vous voulez obtenir?
Non, pas d'erreur. J'ai un tableau avec une dizaine de colonnes et parmi les lignes de la 1ère colonne se trouvent des groupes de caractères en doublons (comme dans l'exemple de ce post).
Mon but est bien de ne prendre comme paramètre que la 1ere colonne.
B65AcR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 11h26   #6
A. D.
Modératrice
 
Femme Aline Deschamps
Chargée de Statistiques
Inscription : juin 2010
Messages : 466
Détails du profil
Informations personnelles :
Nom : Femme Aline Deschamps
Âge : 25
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chargée de Statistiques
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2010
Messages : 466
Points : 1 317
Points : 1 317
Envoyer un message via Skype™ à A. D.
Bonjour,

Le code suggéré par Vincent fonctionne parfaitement si vous souhaitez ne conserver que les premières occurences de chacune des valeurs de la première colonne "val1".

Code :
1
2
3
4
5
6
7
8
9
10
val1<-c(1,1,1,2,2,3,3,4,4)
val2<-c(2,4,6,1,2,7,34,4,3)
V<-cbind(val1,val2)

V[!duplicated(V[,1]),]
     val1 val2
[1,]    1    2
[2,]    2    1
[3,]    3    7
[4,]    4    4
Après, si le résultat que vous souhaitez est vraiment :

Code :
1
2
3
4
5
val1 val2
1 2
2 2
3 7
4 3
Alors vous avez mal posé le problème (ou mal construit votre matrice "V"), car la seconde ligne de ce résultat (2 2) correspond à la seconde occurence de l'élément 2 dans V.
Si c'est donc bien cette matrice que vous souhaitez obtenir, il va falloir préciser un peu les règles de sélection qui ont lieues ici...

Bonne continuation


Cordialement,

A.D.
__________________

Forum R
Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/ .

Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.
A. D. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 09h16   #7
B65AcR
Candidat au titre de Membre du Club
 
Homme
touristepationné
Inscription : janvier 2012
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : touristepationné
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 44
Points : 14
Points : 14
Citation:
Alors vous avez mal posé le problème (ou mal construit votre matrice "V")
En effet! Désolé même après relecture je n'avais toujours pas relevé l'erreur. Du coup, j'ai réédité le message précédent.
B65AcR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 11h03   #8
A. D.
Modératrice
 
Femme Aline Deschamps
Chargée de Statistiques
Inscription : juin 2010
Messages : 466
Détails du profil
Informations personnelles :
Nom : Femme Aline Deschamps
Âge : 25
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chargée de Statistiques
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2010
Messages : 466
Points : 1 317
Points : 1 317
Envoyer un message via Skype™ à A. D.
Donc la solution proposée par Vincent correspond bien à vos besoins ? (un petit pouce vert dans ce cas )

De plus, merci de ne pas éditer un message sur le forum après qu'il ait reçu des réponses, sinon la discussion finit par ne plus avoir de sens !

Bonne continuation


Cordialement,

A.D.
__________________

Forum R
Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/ .

Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.
A. D. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h41.


 
 
 
 
Partenaires

Hébergement Web