Выберите первые 4 строки data.frame в R


109

Как выбрать первые 4 ряда 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

Ответы:


154

Использование head:

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

1
Здравствуйте, а что, если вы хотите получить строки с 5 по 7?
Bustergun

Вы можете использовать ответ "указатель", указанный в другом месте. В этой ситуации я обычно использую функцию среза в dplyr. (Поведение зависит от группировки.)
Эдуардо Леони

130

Используя индекс:

df[1:4,]

Где значения в круглых скобках могут интерпретироваться как логические, числовые или символьные (совпадающие с соответствующими именами):

df[row.index, column.index]

Прочтите справку (`[`) для получения более подробной информации по этому вопросу, а также прочтите об индексных матрицах во введении в R.


4
Это также работает, если вы хотите, чтобы первые четыре строки были только из одного столбца. Для того, чтобы получить первые четыре значения отклика: df[1:4, "Response"].
Iain Samuel McLean Elder

19

Если кому-то интересно dplyrрешение, оно интуитивно понятно:

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

12

Если у вас меньше 4 строк, вы можете использовать headфункцию ( head(data, 4)или head(data, n=4)), и она работает как шарм. Но предположим, что у нас есть следующий набор данных с 15 строками

>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

Допустим, вы хотите выбрать первые 10 строк. Проще всего это сделать 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

Однако предположим, что вы пытаетесь получить первые 19 строк и посмотрите, что происходит - у вас будут отсутствующие значения.

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

и с функцией 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

Надеюсь на эту помощь!


10

В DataFrame можно просто ввести

head(data, num=10L)

чтобы получить первые 10 например.

Для data.frame можно просто ввести

head(data, 10)

чтобы получить первые 10.


Чем этот ответ отличается от принятого ответа, опубликованного 5 лет назад до этого ответа? stackoverflow.com/a/2667843 Добавляет ли он новую информацию?
Ронак Шах
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.