Como obtenho o número de linhas de um data.frame no R? [fechadas]

157

Depois de ler um conjunto de dados:

dataset <- read.csv("forR.csv")
  • Como posso obter o R ​​para me fornecer o número de casos que ele contém?
  • Além disso, o valor retornado incluirá casos de exclusão omitidos com na.omit(dataset)?
Tom Wright
fonte
1
Também recomendo dar uma olhada str(), pois fornece outros detalhes úteis sobre o seu objeto. Muitas vezes, pode explicar por que uma coluna não está se comportando como deveria (fator em vez de numérico, etc.).
Chase
3
Leia o guia R de Owen primeiro ( cran.r-project.org/doc/contrib/Owen-TheRGuide.pdf ) e, se possível, Introdução ao R ( cran.r-project.org/doc/manuals/R- intro.pdf ). Ambos estão no site oficial da R. Você é incrivelmente sortudo por ter uma resposta. Na lista r-help, você o redirecionaria para o manual em termos menos elegantes. Nenhuma ofensa significava.
Joris Meys
11
@Joris - O que foi dito (sem ofensa), mas fiquei com a impressão de que os sites da SE foram projetados para promover o aprendizado de problemas / soluções de uma maneira que não é oferecida pelos manuais. Além disso, esta pergunta estará disponível para outros iniciantes. Obrigado pelos links embora.
Tom Wright
2
Não concordo com a sua afirmação de que esta pergunta será útil para outros iniciantes, principalmente se eles não consultarem o manual. Eles apenas criarão uma pergunta duplicada.
Joshua Ulrich
6
E, quatro anos depois, este é o segundo sucesso que recebi no Google tentando encontrar uma resposta para essa pergunta. Não há necessidade de criar uma duplicata (@JoshuaUlrich).
Richard

Respostas:

173

datasetserá um quadro de dados. Como não tenho forR.csv, criarei um pequeno quadro de dados para ilustração:

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 obter o número de casos, conte o número de linhas usando nrow()ou NROW():

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

Para contar os dados após omitindo o NA, usar as mesmas ferramentas, mas embrulhar datasetem na.omit():

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

A diferença entre NROW()e NCOL()suas variantes em minúsculas ( ncol()e nrow()) é que as versões em minúsculas funcionam apenas para objetos que possuem dimensões (matrizes, matrizes, quadros de dados). As versões em maiúsculas funcionarão com vetores, que são tratados como se fossem uma matriz de 1 coluna e são robustas se você acabar configurando seus dados de forma que R solte uma dimensão vazia.

Como alternativa, use complete.cases()e sum( complete.cases()retorna um vetor lógico [ TRUEou FALSE] indicando se alguma observação é NApara alguma linha.

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

Resumidamente:

  1. Executar dim(dataset)para recuperar tanto n e k , você também pode usar nrow(df)e ncol(df)(e até mesmo NROW(df)e NCOL(df)- variantes são necessários para outros tipos também).

  2. Se você transformar, por exemplo dataset <- na.omit(dataset), via , os casos desaparecerão e não serão contados. Mas se você faz, por exemplo, summary(dataset) os casos de NA são contabilizados.

Dirk Eddelbuettel
fonte