เลือก 4 แถวแรกของ data.frame ใน R


109

ฉันจะเลือก 4 แถวแรกของ 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

คำตอบ:


155

ใช้head:

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

1
สวัสดีถ้าคุณต้องการรับแถวที่ 5 ถึง 7 ล่ะ?
Bustergun

คุณสามารถใช้คำตอบ "ดัชนี" ที่ชี้ไปที่อื่น ในสถานการณ์นี้โดยปกติฉันจะใช้ฟังก์ชัน slice ใน dplyr (พฤติกรรมขึ้นอยู่กับการจัดกลุ่ม)
Eduardo Leoni

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มีการเพิ่มข้อมูลใหม่หรือไม่
Ronak Shah
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.