Jak uzyskać liczbę wierszy ramki data.frame w języku R? [Zamknięte]

157

Po przeczytaniu zestawu danych:

dataset <- read.csv("forR.csv")
  • Jak mogę sprawić, by R podał mi liczbę skrzynek, które zawiera?
  • Czy zwrócona wartość obejmie również przypadki wykluczenia pominięte w na.omit(dataset)?
Tom Wright
źródło
1
Polecam również rzucić okiem, str()ponieważ zawiera on inne przydatne szczegóły dotyczące Twojego obiektu. Często tłumaczy, dlaczego kolumna nie zachowuje się tak, jak powinna (czynnik zamiast numeryczny itp.).
Chase
3
Najpierw przeczytaj przewodnik R Owena ( cran.r-project.org/doc/contrib/Owen-TheRGuide.pdf ), a jeśli to możliwe, wprowadzenie do R ( cran.r-project.org/doc/manuals/R- intro.pdf ). Oba są na oficjalnej stronie R. Masz niewiarygodne szczęście, że faktycznie dostałeś odpowiedź. Na liście pomocy można przekierować do instrukcji w mniej elegancki sposób. Bez obrazy.
Joris Meys,
11
@Joris - Punkt wzięty (bez obrazy), ale miałem wrażenie, że strony SE zostały zaprojektowane w celu wspierania uczenia się problemu / rozwiązania w sposób, który nie jest dostępny w instrukcjach. Dodatkowo, to pytanie będzie teraz dostępne dla innych początkujących. Dzięki za linki.
Tom Wright,
2
Nie zgadzam się z twoim twierdzeniem, że to pytanie będzie pomocne dla innych początkujących, szczególnie jeśli nie przejrzą instrukcji. Po prostu utworzą duplikat pytania.
Joshua Ulrich,
6
Cztery lata później jest to drugi hit, jaki dostałem w Google, próbując znaleźć odpowiedź na to pytanie. Nie muszę tworzyć duplikatu (@JoshuaUlrich).
Richard

Odpowiedzi:

173

datasetbędzie ramką danych. Ponieważ nie mam forR.csv, utworzę małą ramkę danych dla ilustracji:

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

Aby uzyskać liczbę obserwacji, policz liczbę wierszy za pomocą nrow()lub NROW():

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

Aby policzyć dane po pomijając NA, używają tych samych narzędzi, ale owinąć datasetw na.omit():

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

Różnica pomiędzy NROW()i NCOL()ich małymi wariantami ( ncol()i nrow()) polega na tym, że małe litery będą działać tylko dla obiektów, które mają wymiary (tablice, macierze, ramki danych). Wersje z dużymi literami będą działać z wektorami, które są traktowane tak, jakby były macierzą 1-kolumnową, i są niezawodne, jeśli w rezultacie podetniesz dane tak, że R upuści pusty wymiar.

Alternatywnie, użyj complete.cases()i sumit ( complete.cases()zwraca wektor logiczny [ TRUElub FALSE] wskazujący, czy jakieś obserwacje dotyczą NAdowolnego wiersza.

> sum(complete.cases(dataset))
[1] 993
Gavin Simpson
źródło
36

Krótko:

  1. Uruchom, dim(dataset)aby pobrać zarówno n, jak i k , możesz także użyć nrow(df)i ncol(df)(a nawet NROW(df)i NCOL(df)- warianty są potrzebne również dla innych typów).

  2. Jeśli przekształcisz np. Przez dataset <- na.omit(dataset), wtedy przypadki znikną i nie zostaną policzone. Ale jeśli to zrobisz, np summary(dataset) . Przypadki NA zostaną uwzględnione.

Dirk Eddelbuettel
źródło