Comment obtenir le nombre de lignes d'un data.frame dans R? [fermé]

158

Après avoir lu un jeu de données:

dataset <- read.csv("forR.csv")
  • Comment puis-je obtenir que R me donne le nombre de cas qu'il contient?
  • De même, la valeur renvoyée inclura-t-elle les cas exclus omis avec na.omit(dataset)?
Tom Wright
la source
1
Je recommande également de jeter un coup d'oeil str()car il fournit d'autres détails utiles sur votre objet. Peut souvent expliquer pourquoi une colonne ne se comporte pas comme il se doit (facteur au lieu de numérique, etc.).
Chase
3
Veuillez tout d’abord lire le guide R de Owen ( cran.r-project.org/doc/contrib/Owen-TheRGuide.pdf ) et, si possible, l’introduction à R ( cran.r-project.org/doc/manuals/R- intro.pdf ). Les deux sont sur le site officiel de R. Vous êtes incroyablement chanceux d'avoir obtenu une réponse. Sur la liste de ré-aide, on vous redirigerait vers le manuel en des termes moins élégants. Aucune infraction signifiait.
Joris Meys
11
@Joris - Point pris (sans offense), mais j’ai eu l’impression que les sites SE ont été conçus pour favoriser l’apprentissage par problèmes / solutions d’une manière qui n’était pas offerte par les manuels. De plus, cette question sera désormais disponible pour les autres débutants. Merci pour les liens.
Tom Wright
2
Je ne suis pas d’accord avec votre affirmation selon laquelle cette question sera utile aux autres débutants, surtout s’ils n’écriment pas le manuel. Ils vont juste créer une question en double.
Joshua Ulrich
6
Et, quatre ans plus tard, c’est la deuxième fois que Google essaie de trouver une réponse à cette question. Pas besoin de créer un duplicata (@JoshuaUlrich).
Richard

Réponses:

174

datasetsera un cadre de données. Comme je n'ai pas forR.csv, je vais créer un petit bloc de données pour l'illustration:

set.seed(1)
dataset <- data.frame(A = sample(c(NA, 1:100), 1000, rep = TRUE),
                      B = rnorm(1000))

> head(dataset)
   A           B
1 26  0.07730312
2 37 -0.29686864
3 57 -1.18324224
4 91  0.01129269
5 20  0.99160104
6 90  1.59396745

Pour obtenir le nombre d'observations, comptez le nombre de lignes en utilisant nrow()ou NROW():

> nrow(dataset)
[1] 1000
> NROW(dataset)
[1] 1000

Pour compter les données après avoir omis le NA, utilisez les mêmes outils, mais envelopper datasetdans na.omit():

> NROW(na.omit(dataset))
[1] 993

La différence entre NROW()et NCOL()et leurs variantes minuscules ( ncol()et nrow()) est que les versions minuscules ne fonctionnent que pour les objets ayant des dimensions (tableaux, matrices, blocs de données). Les versions majuscules fonctionnent avec des vecteurs, qui sont traités comme s'il s'agissait d'une matrice à 1 colonne et qui sont robustes si vous finissez par sous-définir vos données, de sorte que R supprime une dimension vide.

Alternativement, use complete.cases()et sumit ( complete.cases()retourne un vecteur logique [ TRUEou FALSE] indiquant si les observations NAconcernent des lignes.

> sum(complete.cases(dataset))
[1] 993
Gavin Simpson
la source
36

Brièvement:

  1. Exécuter dim(dataset)pour récupérer à la fois n et k , vous pouvez également utiliser nrow(df)et ncol(df)(et même NROW(df)et NCOL(df)- des variantes sont également nécessaires pour les autres types).

  2. Si vous transformez par exemple via dataset <- na.omit(dataset), alors les cas sont partis et ne sont pas comptés. Mais si vous le faites, par exemple, summary(dataset) les cas de NA sont pris en compte.

Dirk Eddelbuettel
la source