64 votes

Supprimer les lignes du cadre de données où une ligne correspond à une chaîne

Dois-je supprimer toutes les lignes d'une trame de données où une certaine ligne répond à un critère de correspondance de chaîne ?

Par exemple:

 A,B,C
4,3,Foo
2,3,Bar
7,5,Zap

Comment retournerais-je une trame de données qui exclut toutes les lignes où C = Foo :

 A,B,C
2,3,Bar
7,5,Zap

116voto

Luciano Selzer Points 4351

Utilisez simplement le == avec le symbole de négation ( ! ). Si dtfm est le nom de votre data.frame :

 dtfm[!dtfm$C == "Foo", ]

Ou, pour déplacer la négation dans la comparaison :

 dtfm[dtfm$C != "Foo", ]

Ou, encore plus court en utilisant subset() :

 subset(dtfm, C!="Foo")

12voto

Vous pouvez utiliser le dplyr pour supprimer facilement ces lignes particulières.

 library(dplyr)
df <- filter(df, C != "Foo")

1voto

Pratik Honrao Points 11

J'avais une colonne (A) dans un bloc de données avec 3 valeurs (oui, non, inconnue). Je voulais filtrer uniquement les lignes qui avaient une valeur "oui" pour lesquelles c'est le code, j'espère que cela vous aidera également --

 df <- df [(!(df$A=="no") & !(df$A=="unknown")),]

0voto

wesleysc352 Points 93

si vous souhaitez utiliser dplyr, pour supprimer la ligne "Foo":

 df %>%
 filter(!C=="Foo")

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