305 votes

Comment supprimer des lignes dans un cadre de données ?

J'ai un cadre de données nommé "mydata" qui ressemble à ceci :

   A  B  C   D 
1. 5  4  4   4 
2. 5  4  4   4 
3. 5  4  4   4 
4. 5  4  4   4 
5. 5  4  4   4 
6. 5  4  4   4 
7. 5  4  4   4 

Je voudrais supprimer les lignes 2,4,6. Par exemple, comme ceci :

   A  B  C   D
1. 5  4  4  4 
3. 5  4  4  4 
5. 5  4  4  4 
7. 5  4  4  4

12voto

Ryan H. Points 437

Pour être complet, j'ajouterai que cela peut être fait avec dplyr ainsi qu'en utilisant slice . L'avantage de cette méthode est qu'elle peut faire partie d'un flux de travail par canalisation.

df <- df %>%
  .
  .
  slice(-c(2, 4, 6)) %>%
  .
  .

Bien entendu, vous pouvez également l'utiliser sans tuyaux.

df <- slice(df, -c(2, 4, 6))

Le format "non vectoriel", -c(2, 4, 6) moyens d'obtenir tout ce qui est no aux rangs 2, 4 et 6. Pour un exemple utilisant une plage, supposons que vous souhaitiez supprimer les 5 premières lignes, vous pouvez procéder comme suit slice(df, 6:n()) . Pour plus d'exemples, voir la page documents .

8voto

SQLWolfe Points 71

Supprimer Dan de employee.data - Pas besoin de gérer un nouveau data.frame.

employee.data <- subset(employee.data, name!="Dan")

0voto

Alan Carlyle Points 1

Voici une fonction rapide et pratique pour supprimer une ligne par index.

removeRowByIndex <- function(x, row_index) {
  nr <- nrow(x)
  if (nr < row_index) {
    print('row_index exceeds number of rows')
  } else if (row_index == 1)
  {
    return(x[2:nr, ])
  } else if (row_index == nr) {
    return(x[1:(nr - 1), ])
  } else {
    return (x[c(1:(row_index - 1), (row_index + 1):nr), ])
  }
}

Son principal défaut est que l'argument row_index ne suit pas le modèle R d'être un vecteur de valeurs. Il peut y avoir d'autres problèmes, car je n'ai passé que quelques minutes à l'écrire et à le tester, et je n'ai commencé à utiliser R que ces dernières semaines. Tous les commentaires et améliorations sont les bienvenus !

0voto

RJR Points 1

Identifier par un nom :

  1. Appelez l'identifiant unique et identifiez l'emplacement dans votre cadre de données (DF).
  2. Marquer pour supprimer. Si l'identifiant unique s'applique à plusieurs lignes, toutes ces lignes seront supprimées.

Code :

Rows<-which(grepl("unique ID", DF$Column))
DF2<-DF[-c(Rows),]
DF2

0voto

RJR Points 1

Une autre approche pour travailler avec des identifiants uniques consiste à sous-ensembler les données : *Ceci provient d'un rapport réel dans lequel j'ai voulu supprimer la norme chimique.

Chem.Report<-subset(Chem.Report, Chem_ID!="Standard")

Chem_ID est le nom de la colonne. Le ! est important pour exclure les

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X