Filtrer un cadre de données
J'ai lu dans un fichier csv sous forme de matrice (ayant m lignes et n colonnes). Je veux filtrer la matrice par la réalisation d'un filtre en forme verbale:
Sélectionner toutes les valeurs de la colonne x, où les valeurs d'une autre colonne dans cette ligne est égale à "blabla".
C'est comme une instruction select dans la base de données où je dis que je suis intéressé par un sous-ensemble de la matrice où ces contraintes doivent être satisfaites.
Comment puis-je le faire dans la r? J'ai les données que dataframe et pouvez y accéder par les en-têtes. data["column_values" = "15"]
ne me donne pas de retour les lignes où la colonne nommée column_values ont des valeurs de 15 seulement.
Grâce
source d'informationauteur Bob
Vous devez vous connecter pour publier un commentaire.
Tu as dit que tu voulais juste la colonne les valeurs de x où column_values était de 15, droite?
Je pense que cela peut venir comme un dataframe si c'est possble vous devrez peut-être unlist (), et peut-être même "unfactor".
Si vous voulez toutes les colonnes que vous pouvez déposer le troisième argument (le select= argument):
En supposant que
dat
est la trame de données en question,col
est le nom de la colonne et"value"
est la valeur que vous voulez, vous pouvez fairedat[dat$col=="value",]
Qui récupère toutes les lignes de
dat
pour quidat$col=="value"
et toutes les colonnes.Tout d'abord, notez qu'un
matrix
et undata.frame
sont des choses différentes dans l'arrêt R. j'imagine que vous avez undata.frame
(car c'est ce qui est retourné parread.csv()
).data.frame
's ont nommé les colonnes (si vous ne leur donnez pas chers, les génériques sont créés pour vous).Vous pouvez sous-ensemble d'un
data.frame
en indiquant à la fois les lignes que vous voulez et/ou les colonnes que vous souhaitez. La façon la plus simple pour spécifier les lignes est avec une logique vecteur, souvent construit à partir de comparaisons à l'aide des colonnes spécifiques de ladata.frame
. Par exempledata[["column values"]] == "15"
ferait une logique vecteur qui estTRUE
si l'entrée correspondante dans la colonnecolumn values
est la chaîne de caractères "15" (puisque c'est entre guillemets, c'est une chaîne, pas un nombre). Vous pouvez faire aussi compliqué à l'un des critères de sélection que vous le souhaitez (la combinaison logique des vecteurs avec&
et|
) pour spécifier les lignes que vous voulez. Ce vecteur devient le premier argument dans l'indexation.Une liste de noms de colonnes ou de numéros qui peuvent être le deuxième argument. Si l'argument est absent, toutes les lignes (ou les colonnes) sont prises en charge.
Mettre tous ensemble, vous obtenez des exemples comme
ou à l'aide d'un ensemble de données (
mtcars
)Prendre un coup d'oeil à ce que chacune des conditions (d'abord des arguments, par exemple
mtcars$am == 1 & mtcars$hp > 100
) retourner à obtenir une meilleure idée de la façon dont l'indexation des œuvres.