Selecione as primeiras 4 linhas de um data.frame em R


109

Como posso selecionar as primeiras 4 linhas de um 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

Respostas:


154

Use head:

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

1
Olá, e se você quiser obter as linhas 5 a 7?
Bustergun

Você pode usar a resposta "índice" indicada em outro lugar. Nessa situação, normalmente uso a função slice no dplyr. (O comportamento depende do agrupamento.)
Eduardo Leoni

129

Usando o índice:

df[1:4,]

Onde os valores entre parênteses podem ser interpretados como lógico, numérico ou caractere (correspondendo aos respectivos nomes):

df[row.index, column.index]

Leia a ajuda (`[`) para obter mais detalhes sobre este assunto, e também leia sobre matrizes de índice na Introdução a R.


4
Isso também funciona se você quiser as primeiras quatro linhas de apenas uma coluna. Para obter os primeiros valores de resposta quatro: df[1:4, "Response"].
Iain Samuel McLean Elder,

19

Caso alguém esteja interessado na dplyrsolução, é muito intuitivo:

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

12

Se você tiver menos de 4 linhas, pode usar a headfunção ( head(data, 4)ou head(data, n=4)) e funciona perfeitamente. Mas, suponha que temos o seguinte conjunto de dados com 15 linhas

>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 você deseja selecionar as primeiras 10 linhas. A maneira mais fácil de fazer isso seria 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

No entanto, digamos que você tente recuperar as primeiras 19 linhas e veja o que acontece - você terá valores ausentes

> 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 com a função 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 esta ajuda!


10

Pois no DataFrame pode-se simplesmente digitar

head(data, num=10L)

para obter os primeiros 10, por exemplo.

Para um data.frame, pode-se simplesmente digitar

head(data, 10)

para obter os primeiros 10.


Como essa resposta difere da resposta aceita que foi postada 5 anos atrás antes desta resposta? stackoverflow.com/a/2667843 Adiciona alguma informação nova?
Ronak Shah
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.