Wybierz pierwsze 4 wiersze data.frame w R.


109

Jak mogę wybrać pierwsze 4 rzędy data.frame:

              Weight Response
1   Control     59      0.0
2 Treatment     90      0.8
3 Treatment     47      0.1
4 Treamment    106      0.1
5   Control     85      0.7
6 Treatment     73      0.6
7   Control     61      0.2

Odpowiedzi:


154

Zastosowanie head:

dnow <- data.frame(x=rnorm(100), y=runif(100))
head(dnow,4) ## default is 6

1
Witam, a co jeśli chcesz uzyskać wiersze od 5 do 7?
Bustergun

Możesz użyć odpowiedzi „indeks” wskazanej w innym miejscu. W tej sytuacji zwykle używam funkcji slice w dplyr. (Zachowanie zależy od grupy.)
Eduardo Leoni,

130

Korzystanie z indeksu:

df[1:4,]

Gdzie wartości w nawiasach można interpretować jako logiczne, numeryczne lub znakowe (pasujące do odpowiednich nazw):

df[row.index, column.index]

Przeczytaj pomoc (`` [`), aby uzyskać więcej szczegółów na ten temat, a także przeczytaj o macierzach indeksów we wstępie do R.


4
Działa to również, jeśli chcesz, aby pierwsze cztery wiersze były z jednej kolumny. Aby uzyskać pierwsze cztery wartości odpowiedzi: df[1:4, "Response"].
Iain Samuel McLean Starszy

19

Jeśli ktoś jest zainteresowany dplyrrozwiązaniem, jest to bardzo intuicyjne:

dt <- dt %>%
  slice(1:4)

12

Jeśli masz mniej niż 4 wiersze, możesz użyć headfunkcji ( head(data, 4)lub head(data, n=4)) i działa ona jak urok. Ale załóżmy, że mamy następujący zestaw danych z 15 wierszami

>data <- data <- read.csv("./data.csv", sep = ";", header=TRUE)

>data
 LungCap Age Height Smoke Gender Caesarean
1    6.475   6   62.1    no   male        no
2   10.125  18   74.7   yes female        no
3    9.550  16   69.7    no female       yes
4   11.125  14   71.0    no   male        no
5    4.800   5   56.9    no   male        no
6    6.225  11   58.7    no female        no
7    4.950   8   63.3    no   male       yes
8    7.325  11   70.4    no  male         no
9    8.875  15   70.5    no   male        no
10   6.800  11   59.2    no   male        no
11   6.900  12   59.3    no   male        no
12   6.100  13   59.4    no   male        no
13   6.110  14   59.5    no   male        no
14   6.120  15   59.6    no   male        no
15   6.130  16   59.7    no   male        no

Powiedzmy, że chcesz zaznaczyć pierwsze 10 wierszy. Najłatwiej byłoby to zrobić data[1:10, ].

> data[1:10,]
   LungCap Age Height Smoke Gender Caesarean
1    6.475   6   62.1    no   male        no
2   10.125  18   74.7   yes female        no
3    9.550  16   69.7    no female       yes
4   11.125  14   71.0    no   male        no
5    4.800   5   56.9    no   male        no
6    6.225  11   58.7    no female        no
7    4.950   8   63.3    no   male       yes
8    7.325  11   70.4    no  male         no
9    8.875  15   70.5    no   male        no
10   6.800  11   59.2    no   male        no

Załóżmy jednak, że spróbujesz pobrać pierwsze 19 wierszy i zobaczyć, co się stanie - będziesz mieć brakujące wartości

> data[1:19,]
     LungCap Age Height Smoke Gender Caesarean
1      6.475   6   62.1    no   male        no
2     10.125  18   74.7   yes female        no
3      9.550  16   69.7    no female       yes
4     11.125  14   71.0    no   male        no
5      4.800   5   56.9    no   male        no
6      6.225  11   58.7    no female        no
7      4.950   8   63.3    no   male       yes
8      7.325  11   70.4    no  male         no
9      8.875  15   70.5    no   male        no
10     6.800  11   59.2    no   male        no
11     6.900  12   59.3    no   male        no
12     6.100  13   59.4    no   male        no
13     6.110  14   59.5    no   male        no
14     6.120  15   59.6    no   male        no
15     6.130  16   59.7    no   male        no
NA        NA  NA     NA  <NA>   <NA>      <NA>
NA.1      NA  NA     NA  <NA>   <NA>      <NA>
NA.2      NA  NA     NA  <NA>   <NA>      <NA>
NA.3      NA  NA     NA  <NA>   <NA>      <NA>

i z funkcją head (),

> head(data, 19) # or head(data, n=19)
   LungCap Age Height Smoke Gender Caesarean
1    6.475   6   62.1    no   male        no
2   10.125  18   74.7   yes female        no
3    9.550  16   69.7    no female       yes
4   11.125  14   71.0    no   male        no
5    4.800   5   56.9    no   male        no
6    6.225  11   58.7    no female        no
7    4.950   8   63.3    no   male       yes
8    7.325  11   70.4    no  male         no
9    8.875  15   70.5    no   male        no
10   6.800  11   59.2    no   male        no
11   6.900  12   59.3    no   male        no
12   6.100  13   59.4    no   male        no
13   6.110  14   59.5    no   male        no
14   6.120  15   59.6    no   male        no
15   6.130  16   59.7    no   male        no

Mam nadzieję, że to pomoże!


10

W DataFrame można po prostu wpisać

head(data, num=10L)

aby na przykład uzyskać pierwsze 10.

Dla data.frame można po prostu wpisać

head(data, 10)

aby zdobyć pierwsze 10.


Czym ta odpowiedź różni się od zaakceptowanej odpowiedzi opublikowanej 5 lat temu przed tą odpowiedzią? stackoverflow.com/a/2667843 Czy dodaje jakieś nowe informacje?
Ronak Shah
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.