¿Cómo obtengo el número de filas de un data.frame en R? [cerrado]

158

Después de leer un conjunto de datos:

dataset <- read.csv("forR.csv")
  • ¿Cómo puedo hacer que R me dé la cantidad de casos que contiene?
  • Además, ¿incluirá el valor devuelto los casos de exclusión omitidos con na.omit(dataset)?
Tom Wright
fuente
1
También recomiendo echar un vistazo, str()ya que proporciona otros detalles útiles sobre su objeto. A menudo puede explicar por qué una columna no se comporta como debería (factor en lugar de numérico, etc.).
Chase
3
Lea primero la guía R de Owen ( cran.r-project.org/doc/contrib/Owen-TheRGuide.pdf ) y, si es posible, Introducción a R ( cran.r-project.org/doc/manuals/R- intro.pdf ). Ambos están en el sitio web oficial de R. Eres increíblemente afortunado de que realmente obtengas una respuesta. En la lista de r-help, uno lo redirigiría al manual en términos menos elegantes. Sin ofender.
Joris Meys
11
@Joris: punto tomado (sin ofender), pero tuve la impresión de que los sitios de SE fueron diseñados para fomentar el aprendizaje de problemas / soluciones de una manera que no es posible en los manuales. Además, esta pregunta ahora estará disponible para otros principiantes. Gracias por los enlaces sin embargo.
Tom Wright
2
No estoy de acuerdo con su afirmación de que esta pregunta será útil para otros principiantes, especialmente si no leen el manual. Simplemente crearán una pregunta duplicada.
Joshua Ulrich
66
Y, cuatro años después, este es el segundo éxito que recibí en Google tratando de encontrar una respuesta a esta pregunta. No es necesario que cree un duplicado (@JoshuaUlrich).
Richard

Respuestas:

174

datasetSerá un marco de datos. Como no tengo forR.csv, inventaré un pequeño marco de datos para ilustración:

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

Para obtener el número de casos, cuente el número de filas usando nrow()o NROW():

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

Para contar los datos después de la omisión de la NA, utilizar las mismas herramientas, pero envolver dataseten na.omit():

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

La diferencia entre NROW()y NCOL()y sus variantes en minúsculas ( ncol()y nrow()) es que las versiones en minúsculas solo funcionarán para objetos que tengan dimensiones (matrices, matrices, marcos de datos). Las versiones en mayúscula funcionarán con vectores, que se tratan como si fueran una matriz de 1 columna, y son robustos si terminas subconjustando tus datos de modo que R descarte una dimensión vacía.

Alternativamente, úselo complete.cases()y sum( complete.cases()devuelve un vector lógico [ TRUEo FALSE] que indica si alguna observación es NApara alguna fila.

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

Brevemente:

  1. Ejecute dim(dataset)para recuperar tanto n como k , también puede usar nrow(df)y ncol(df)(e incluso NROW(df)y NCOL(df)- también se necesitan variantes para otros tipos).

  2. Si transforma, por ejemplo dataset <- na.omit(dataset), via , los casos desaparecen y no se cuentan. Pero si lo hace, por ejemplo, summary(dataset) los casos de NA se contabilizan.

Dirk Eddelbuettel
fuente