Seleziona le prime 4 righe di un data.frame in R


109

Come posso selezionare le prime 4 righe di un 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

Risposte:


154

Usa head:

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

1
Ciao, e se volessi ottenere le righe da 5 a 7?
Bustergun

Puoi usare la risposta "indice" indicata altrove. In questa situazione normalmente utilizzo la funzione slice in dplyr. (Il comportamento dipende dal raggruppamento.)
Eduardo Leoni

129

Utilizzando l'indice:

df[1:4,]

Dove i valori tra parentesi possono essere interpretati come logici, numerici o caratteri (corrispondenti ai rispettivi nomi):

df[row.index, column.index]

Leggi la guida (`[`) per maggiori dettagli su questo argomento e leggi anche le matrici degli indici nell'Introduzione a R.


4
Funziona anche se desideri le prime quattro righe da una sola colonna. Per ottenere i primi quattro valori di risposta: df[1:4, "Response"].
Iain Samuel McLean Elder

19

Nel caso qualcuno sia interessato alla dplyrsoluzione, è molto intuitivo:

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

12

Se hai meno di 4 righe, puoi usare la headfunzione ( head(data, 4)o head(data, n=4)) e funziona a meraviglia. Ma supponiamo di avere il seguente set di dati con 15 righe

>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

Diciamo che vuoi selezionare le prime 10 righe. Il modo più semplice per farlo sarebbe 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

Tuttavia, supponiamo che tu provi a recuperare le prime 19 righe e vedere cosa succede: avrai dei valori mancanti

> 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>

e con la funzione 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

Spero che questo aiuto!


10

Perché in DataFrame si può semplicemente digitare

head(data, num=10L)

per ottenere i primi 10 ad esempio.

Per un data.frame si può semplicemente digitare

head(data, 10)

per ottenere i primi 10.


In che modo questa risposta è diversa dalla risposta accettata che è stata pubblicata 5 anni fa prima di questa risposta? stackoverflow.com/a/2667843 Aggiunge nuove informazioni?
Ronak Shah
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.