Retirer des lignes d'un tableau de variables en fonction d'une valeur

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

Allan BENGUE
Messages : 2
Enregistré le : 24 Nov 2020, 15:30

Retirer des lignes d'un tableau de variables en fonction d'une valeur

Messagepar Allan BENGUE » 27 Nov 2020, 11:07

Bonjour à tous, j'aimerai savoir comment retirer plusieurs lignes d'un tableau en donnant une valeur précise et je n'ai pas trouvé d'infos sur les différents sujets existants.
Je m'explique : j'ai à ma disposition un tableau de variables qui comporte plusieurs observations par individus. J'aimerai retirer tous les individus ayant moins de 6 observations de ce même tableau.
La fonction suivante me donne le numéro des individus que je dois retirer de mon tableau :

nb.obs<-table(fourmis.one$ant_code)
nb.obs[nb.obs<=5] # 4 5 10 11 12 21 22 23 24 27

Je n'ai pas trouvé d'autres méthodes que de les enlever une par une de cette façon :

fourmis.one<-fourmis.one[fourmis.one$"ant_code" !="4",]
fourmis.one<-fourmis.one[fourmis.one$"ant_code" !="5",]
fourmis.one<-fourmis.one[fourmis.one$"ant_code" !="10",]
fourmis.one<-fourmis.one[fourmis.one$"ant_code" !="11",]
...

Auriez vous une méthode plus efficace à me proposer ? Merci d'avance pour votre aide :)

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

Re: Retirer des lignes d'un tableau de variables en fonction d'une valeur

Messagepar Mickael Canouil » 27 Nov 2020, 12:58

Bonjour,

quelque-chose comme ça:

Code : Tout sélectionner

nb.obs <- table(fourmis.one[["ant_code"]])
fourmis.one[!fourmis.one[["ant_code"]] %in% names(nb.obs)[nb.obs<=5], 

En seule ligne:

Code : Tout sélectionner

fourmis.one[!fourmis.one[["ant_code"]] %in% names(which(table(fourmis.one[["ant_code"]]) <= 5)), 

Edit avec une version plus "positive"

Code : Tout sélectionner

fourmis.one[fourmis.one[["ant_code"]] %in% names(which(table(fourmis.one[["ant_code"]]) > 5)), 

Si vous voulez une réponse plus détaillée :

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

Fred Santos
Messages : 233
Enregistré le : 11 Avr 2009, 10:00
Contact :

Re: Retirer des lignes d'un tableau de variables en fonction d'une valeur

Messagepar Fred Santos » 27 Nov 2020, 13:04

Bonjour,

Sans code reproductible, difficile d'être sûr. En tout cas, un exemple simple ici, repartant de votre propre code, et que vous pouvez adapter :

Code : Tout sélectionner

## Créer des données fictives :
dtf = data.frame(Indiv = factor(c(rep('Titi', 4),
                                  rep('Toto', 8),
                                  rep('Tutu', 5),
                                  rep('Tata', 13))), 
                 Value 
= rnorm(30))

## En repartant de votre code :
nb.obs <- table(dtf$Indiv)
keep <- nb.obs[nb.obs >= 6]
## Affichage du résultat "filtré" :
subset(dtf, Indiv %in% names(keep)) 

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Retirer des lignes d'un tableau de variables en fonction d'une valeur

Messagepar Serge Rapenne » 27 Nov 2020, 13:28

bonjour,

ou voir la commande "filter" du package dplyr

mes 2 centimes

Serge

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

Re: Retirer des lignes d'un tableau de variables en fonction d'une valeur

Messagepar Pierre-Yves Berrard » 27 Nov 2020, 13:30

Serge Rapenne a écrit :bonjour,

ou voir la commande "filter" du package dplyr

mes 2 centimes

Serge

Code : Tout sélectionner

fourmis.one %>% group_by(ant_code) %>% filter(n() > 5) %>% ungroup()
PY

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

Re: Retirer des lignes d'un tableau de variables en fonction d'une valeur

Messagepar Mickael Canouil » 27 Nov 2020, 14:28

Ok, j'ajoute data.table

Code : Tout sélectionner

library("data.table")
setDT(fourmis.one)[= .SD[.> 5], by = "ant_code"
Mickaël
mickael.canouil.fr | rlille.fr

Allan BENGUE
Messages : 2
Enregistré le : 24 Nov 2020, 15:30

Re: Retirer des lignes d'un tableau de variables en fonction d'une valeur

Messagepar Allan BENGUE » 30 Nov 2020, 16:53

Merci beaucoup ça marche ! Grâce à votre aide j'ai pu poursuivre mon projet (qui avance tout doucement ahah).


Retourner vers « Questions en cours »

Qui est en ligne

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

cron