วิธีซับเซ็ต data frame ใน r (4 ตัวอย่าง)


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อซับเซ็ตเฟรมข้อมูลใน R:

 df[rows, columns]

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'C'),
                 points=c(77, 81, 89, 83, 99, 92, 97),
                 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

  team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 C 97 14

ตัวอย่างที่ 1: กรอบข้อมูลย่อยโดยการเลือกคอลัมน์

รหัสต่อไปนี้แสดงวิธีการตั้งค่าย่อยกรอบข้อมูลตามชื่อคอลัมน์:

 #select all rows for columns 'team' and 'assists'
df[, c(' team ', ' assists ')]

  team assists
1 to 19
2 to 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

นอกจากนี้เรายังสามารถย่อยเฟรมข้อมูลด้วยค่าดัชนีคอลัมน์:

 #select all rows for columns 1 and 3
df[, c(1, 3)]

  team assists
1 to 19
2 to 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

ตัวอย่างที่ 2: กรอบข้อมูลย่อยไม่รวมคอลัมน์

รหัสต่อไปนี้แสดงวิธีเซ็ตย่อยเฟรมข้อมูลโดยการยกเว้นชื่อคอลัมน์เฉพาะ:

 #define columns to exclude
cols <- names(df) %in% c(' points ')

#exclude points column
df[!cols]

  team assists
1 to 19
2 to 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

นอกจากนี้เรายังสามารถยกเว้นคอลัมน์โดยใช้ค่าดัชนีได้

 #exclude column 2
df[, c(-2)]

  team assists
1 to 19
2 to 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

ตัวอย่างที่ 3: กรอบข้อมูลย่อยโดยการเลือกแถว

รหัสต่อไปนี้แสดงวิธีเซ็ตย่อยเฟรมข้อมูลตามแถวที่ระบุ:

 #select rows 1, 5, and 7
df[c(1, 5, 7), ]

  team points assists
1 A 77 19
5 C 99 32
7 C 97 14

นอกจากนี้เรายังสามารถซับเซ็ตเฟรมข้อมูลโดยเลือกช่วงแถว:

 #select rows 1 through 5
df[1:5, ]

  team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32

ตัวอย่างที่ 4: กรอบข้อมูลย่อยตามเงื่อนไข

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน subset() เพื่อเลือกแถวและคอลัมน์ที่ตรงตามเงื่อนไขบางประการ:

 #select rows where points is greater than 90
subset(df, points > 90)

  team points assists
5 C 99 32
6 C 92 39
7 C 97 14

เรายังสามารถใช้ | ตัวดำเนินการ (“หรือ”) เพื่อเลือกแถวที่ตรงตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้:

 #select rows where points is greater than 90 or less than 80
subset(df, points > 90 | points < 80)

  team points assists
1 A 77 19
5 C 99 32
6 C 92 39
7 C 97 14

นอกจากนี้เรายังสามารถใช้ตัวดำเนินการ & (“และ”) เพื่อเลือกแถวที่ตรงตามเงื่อนไขหลายประการ:

 #select rows where points is greater than 90 and assists is greater than 30
subset(df, points > 90 & assists > 30)

  team points assists
5 C 99 32
6 C 92 39

นอกจากนี้เรายังสามารถใช้อาร์กิวเมนต์ select เพื่อเลือกเฉพาะบางคอลัมน์ตามเงื่อนไข:

 #select rows where points is greater than 90 and only show 'team' column
subset(df, points > 90, select=c(' team '))

  team
5C
6C
7C

แหล่งข้อมูลเพิ่มเติม

วิธีลบแถวออกจาก data frame ใน R ตามเงื่อนไข
วิธีแทนที่ค่าใน data frame ใน R
วิธีลบคอลัมน์ออกจาก data frame ใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *