Chọn 4 hàng đầu tiên của data.frame trong R


109

Làm cách nào để chọn 4 hàng đầu tiên của a 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

Câu trả lời:


154

Sử dụng head:

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

1
Xin chào, nếu bạn muốn lấy hàng từ 5 đến 7 thì sao?
Bustergun

Bạn có thể sử dụng câu trả lời "chỉ mục" được chỉ ra ở những nơi khác. Trong tình huống này, tôi thường sử dụng hàm Slice trong dplyr. (Hành vi phụ thuộc vào nhóm.)
Eduardo Leoni

129

Sử dụng chỉ mục:

df[1:4,]

Trong đó các giá trị trong dấu ngoặc đơn có thể được hiểu là lôgic, số hoặc ký tự (khớp với các tên tương ứng):

df[row.index, column.index]

Đọc trợ giúp (`[`) để biết thêm chi tiết về chủ đề này, đồng thời đọc về ma trận chỉ mục trong Giới thiệu về R.


4
Điều này cũng hoạt động nếu bạn muốn bốn hàng đầu tiên chỉ từ một cột. Để có được bốn giá trị phản ứng đầu tiên: df[1:4, "Response"].
Iain Samuel McLean Elder

19

Trong trường hợp ai đó quan tâm đến dplyrgiải pháp, nó rất trực quan:

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

12

Nếu bạn có ít hơn 4 hàng, bạn có thể sử dụng headhàm ( head(data, 4)hoặc head(data, n=4)) và nó hoạt động giống như một chiếc bùa. Tuy nhiên, giả sử chúng ta có tập dữ liệu sau với 15 hàng

>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

Giả sử bạn muốn chọn 10 hàng đầu tiên. Cách dễ nhất để làm điều đó sẽ là 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

Tuy nhiên, giả sử bạn cố gắng truy xuất 19 hàng đầu tiên và xem điều gì sẽ xảy ra - bạn sẽ thiếu các giá trị

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

và với hàm 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

Hy vọng điều này giúp đỡ!


10

Đối với DataFrame, người ta có thể chỉ cần gõ

head(data, num=10L)

để lấy 10 đầu tiên chẳng hạn.

Đối với data.frame, người ta có thể chỉ cần nhập

head(data, 10)

để có được 10 đầu tiên.


Câu trả lời này khác với câu trả lời được chấp nhận đã được đăng cách đây 5 năm trước câu trả lời này như thế nào? stackoverflow.com/a/2667843 Nó có thêm bất kỳ thông tin mới nào không?
Ronak Shah
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.