Seleccione las primeras 4 filas de un marco de datos en R


109

¿Cómo puedo seleccionar las primeras 4 filas de 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

Respuestas:


154

Utilizar head:

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

1
Hola, ¿qué pasa si quieres obtener las filas 5 a 7?
Bustergun

Puede utilizar la respuesta "índice" que se indica en otro lugar. En esta situación, normalmente uso la función de corte en dplyr. (El comportamiento depende de la agrupación.)
Eduardo Leoni

129

Usando el índice:

df[1:4,]

Donde los valores entre paréntesis se pueden interpretar como lógicos, numéricos o de carácter (que coincidan con los nombres respectivos):

df[row.index, column.index]

Lea la ayuda (`[`) para obtener más detalles sobre este tema, y ​​también lea sobre matrices de índice en la Introducción a R.


4
Esto también funciona si desea las primeras cuatro filas de una sola columna. Para obtener los primeros cuatro valores de respuesta: df[1:4, "Response"].
Iain Samuel McLean Elder

19

En caso de que alguien esté interesado en una dplyrsolución, es muy intuitivo:

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

12

Si tiene menos de 4 filas, puede usar la headfunción ( head(data, 4)o head(data, n=4)) y funciona de maravilla. Pero supongamos que tenemos el siguiente conjunto de datos con 15 filas

>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

Digamos que desea seleccionar las primeras 10 filas. La forma más sencilla de hacerlo sería 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

Sin embargo, digamos que intenta recuperar las primeras 19 filas y ve lo que sucede; tendrá valores perdidos

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

y con la función 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

¡Espero que esto ayude!


10

Porque en DataFrame uno simplemente puede escribir

head(data, num=10L)

para obtener los primeros 10, por ejemplo.

Para un data.frame, simplemente se puede escribir

head(data, 10)

para obtener los primeros 10.


¿En qué se diferencia esta respuesta de la respuesta aceptada que se publicó hace 5 años antes de esta respuesta? stackoverflow.com/a/2667843 ¿Agrega alguna información nueva?
Ronak Shah
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.