Sélection de lignes

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

Virginie Le Cras
Messages : 25
Enregistré le : 16 Mar 2016, 14:26

Sélection de lignes

Messagepar Virginie Le Cras » 02 Mai 2016, 12:45

Bonjour,

J'ai un tableau de la forme suivante :

Code : Tout sélectionner

Code   Nombre
A   2
A   3
A   5
B   6
C   8
C   7

J'aimerais supprimer les lignes pour lesquelles il n'y a qu'un enregistrement et obtenir ce tableau :

Code : Tout sélectionner

Code   Nombre
A   2
A   3
A   5
C   8
C   7


J'ai le sentiment que ce n'est pas bien compliqué mais je bloque.

Un peu d'aide serait la bienvenue !

Merci.

Virginie

Maxime Hervé
Messages : 427
Enregistré le : 03 Mar 2010, 14:21
Contact :

Re: Sélection de lignes

Messagepar Maxime Hervé » 02 Mai 2016, 12:55

Bonjour,
en partant du principe que Code est un facteur, une possibilité :

Code : Tout sélectionner

tab <- data.frame(Code=rep(LETTERS[1:3],c(3,1,2)),Nombre=c(2,3,5,6,8,7))
tab
  Code Nombre
1    A      2
2    A      3
3    A      5
4    B      6
5    C      8
6    C      7
tab[-which(tab$Code %in% levels(tab$Code)[which(table(tab$Code)==1)]),]
  Code Nombre
1    A      2
2    A      3
3    A      5
5    C      8
6    C      7

Qui est basée sur la fonction table() :

Code : Tout sélectionner

table(tab$Code)
A B C
3 1 2

Maxime

Virginie Le Cras
Messages : 25
Enregistré le : 16 Mar 2016, 14:26

Re: Sélection de lignes

Messagepar Virginie Le Cras » 02 Mai 2016, 13:12

C'est ce qu'il me fallait, merci pour la réponse très rapide !

Par contre je remarque quelque chose d'étrange, dans mon tableau j'ai des modalités du facteur à 0. C'est possible ?

Code : Tout sélectionner

table(tab$Code)
A B C D
3 1 2 0

Par exemple j'ai une modalité "D" qui apparaît alors que je n'en ai pas dans mon tableau. Qu'est ce qui pourrait expliquer ça ?

Maxime Hervé
Messages : 427
Enregistré le : 03 Mar 2010, 14:21
Contact :

Re: Sélection de lignes

Messagepar Maxime Hervé » 02 Mai 2016, 13:32

Oui c'est le cas quand vous faites une sélection sur la base d'un premier tableau, toutes les modalités présentes dans le permier tableau sont conservées même si elles ne sont pas représentées. Pour les supprimer :

Code : Tout sélectionner

tab <- droplevels(tab)

Maxime

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Sélection de lignes

Messagepar Logez Maxime » 02 Mai 2016, 13:33

Bonjour,

tu peux aussi passer par la fonction duplicated :

Code : Tout sélectionner

tab <- data.frame(Code=rep(LETTERS[1:3],c(3,1,2)),Nombre=c(2,3,5,6,8,7))
tab[(duplicated(tab$Code) | duplicated(tab$Code, fromLast =T)),]
  Code Nombre
1    A      2
2    A      3
3    A      5
5    C      8
6    C      7
Pour les modalités manquantes c'est "normal". Quand tu fais une sélection dans un facteur, la modalité peut disparaitre du vecteur comme le B mais ne disparait pas des modalités potentielles que peut avoir ton facteur. Le fait qu'une modalité ne soit pas présente peut constituer une information. Si tu veux les faire disparaître il te faut utiliser de nouveau la fonction factor (tab$Code <- factor(tab$Code)).

Cordialement,
Maxime

Virginie Le Cras
Messages : 25
Enregistré le : 16 Mar 2016, 14:26

Re: Sélection de lignes

Messagepar Virginie Le Cras » 02 Mai 2016, 13:39

Ok je comprends mieux.
Merci à vous deux pour vos réponses !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Bertrand Vassor, Google [Bot] et 1 invité