Sélectionnez les 4 premières lignes d'un data.frame dans R

109

Comment puis-je sélectionner les 4 premières lignes d'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
Moe
la source

Réponses:

154

Utilisez head:

dnow <- data.frame(x=rnorm(100), y=runif(100))
head(dnow,4) ## default is 6
Eduardo Leoni
la source
1
Bonjour, que faire si vous voulez obtenir les lignes 5 à 7?
Bustergun
Vous pouvez utiliser la réponse «index» indiquée ailleurs. Dans cette situation, j'utilise normalement la fonction slice dans dplyr. (Le comportement dépend du groupement.)
Eduardo Leoni
130

Utilisation de l'index:

df[1:4,]

Où les valeurs entre parenthèses peuvent être interprétées comme logiques, numériques ou caractères (correspondant aux noms respectifs):

df[row.index, column.index]

Lisez l'aide (`[`) pour plus de détails sur ce sujet, ainsi que sur les matrices d'index dans l'introduction à R.

Shane
la source
4
Cela fonctionne également si vous voulez que les quatre premières lignes proviennent d'une seule colonne. Pour obtenir les quatre premières valeurs de réponse: df[1:4, "Response"].
Iain Samuel McLean Elder
19

Au cas où quelqu'un serait intéressé par une dplyrsolution, c'est très intuitif:

dt <- dt %>%
  slice(1:4)
Giacomo
la source
12

Si vous avez moins de 4 lignes, vous pouvez utiliser la headfonction ( head(data, 4)ou head(data, n=4)) et cela fonctionne comme un charme. Mais, supposons que nous ayons le jeu de données suivant avec 15 lignes

>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

Disons que vous souhaitez sélectionner les 10 premières lignes. La façon la plus simple de le faire serait 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

Cependant, disons que vous essayez de récupérer les 19 premières lignes et de voir ce qui se passe - vous aurez des valeurs manquantes

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

et avec la fonction 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

J'espère que cette aide!

Desta Haileselassie Hagos
la source
10

Car chez DataFrame on peut simplement taper

head(data, num=10L)

pour obtenir les 10 premiers par exemple.

Pour un data.frame, il suffit de taper

head(data, 10)

pour obtenir les 10 premiers.

Ole Petersen
la source
En quoi cette réponse est-elle différente de la réponse acceptée qui a été publiée il y a 5 ans avant cette réponse? stackoverflow.com/a/2667843 Ajoute- t-il de nouvelles informations?
Ronak Shah le