วิธีย่อยเฟรมข้อมูลตามรายการค่าใน r


คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อกำหนดย่อยกรอบข้อมูลตามรายการค่าใน R:

วิธีที่ 1: ใช้ Base R

 df_new <- df[df$my_column %in% vals,]

วิธีที่ 2: ใช้ dplyr

 library (dplyr)

df_new <- filter(df, my_column %in% vals)

วิธีที่ 3: ใช้ data.table

 library (data.table)

df_new <- setDT(df, key=' my_column ')[J(vals)]

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

 #create data frame
df <- data. frame (team=c('A', 'B', 'B', 'B', 'C', 'C', 'C', 'D'),
                 points=c(12, 22, 35, 34, 20, 28, 30, 18),
                 assists=c(4, 10, 11, 12, 12, 8, 6, 10))

#view data frame
df

  team points assists
1 to 12 4
2 B 22 10
3 B 35 11
4 B 34 12
5 C 20 12
6 C 28 8
7 C 30 6
8 D 18 10

วิธีที่ 1: ชุดย่อยของกรอบข้อมูลตามรายการค่าในฐาน R

รหัสต่อไปนี้แสดงวิธีตั้งค่าย่อยเฟรมข้อมูลเพื่อให้มีเฉพาะแถวที่มีค่า “A” หรือ “C” ในคอลัมน์ ทีม :

 #define values to subset by
vals <- c(' A ', ' C ')

#subset data frame to only contain rows where team is 'A' or 'C'
df_new <- df[df$team %in% vals,]

#view results
df_new

  team points assists
1 to 12 4
5 C 20 12
6 C 28 8
7 C 30 6

กรอบข้อมูลผลลัพธ์จะมีเฉพาะแถวที่มีค่า “A” หรือ “C” ในคอลัมน์ ทีม

โปรดทราบว่าเราใช้ฟังก์ชัน R พื้นฐานในตัวอย่างนี้ ดังนั้นเราจึงไม่ต้องโหลดแพ็กเกจเพิ่มเติมใดๆ

วิธีที่ 2: ชุดย่อย Dataframe ตามรายการค่าใน dplyr

รหัสต่อไปนี้แสดงวิธีตั้งค่าย่อยกรอบข้อมูลให้มีเฉพาะแถวที่มีค่า “A” หรือ “C” ในคอลัมน์ ทีม โดยใช้ฟังก์ชัน filter() จากแพ็คเกจ dplyr :

 library (dplyr)

#define values to subset by
vals <- c(' A ', ' C ')

#subset data frame to only contain rows where team is 'A' or 'C'
df_new <- filter(df, team %in% vals)

#view results
df_new

  team points assists
1 to 12 4
5 C 20 12
6 C 28 8
7 C 30 6

กรอบข้อมูลผลลัพธ์จะมีเฉพาะแถวที่มีค่า “A” หรือ “C” ในคอลัมน์ ทีม

วิธีที่ 3: เซ็ตย่อย dataframe ตามรายการค่าใน data.table

รหัสต่อไปนี้แสดงวิธีตั้งค่าย่อยกรอบข้อมูลให้มีเฉพาะแถวที่มีค่า “A” หรือ “C” ในคอลัมน์ ทีม โดยใช้ฟังก์ชันในแพ็คเกจ data.table :

 library (data.table)

#define values to subset by
vals <- c(' A ', ' C ')

#subset data frame to only contain rows where team is 'A' or 'C'
df_new <- setDT(df, key=' team ')[J(vals)]

#view results
df_new

   team points assists
1: A 12 4
2: C 20 12
3: C 28 8
4: C 30 6

กรอบข้อมูลผลลัพธ์จะมีเฉพาะแถวที่มีค่า “A” หรือ “C” ในคอลัมน์ ทีม

ที่เกี่ยวข้อง: วิธีใช้ตัวดำเนินการ %in% ใน R (พร้อมตัวอย่าง)

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีซับเซ็ตเฟรมข้อมูลตามระดับแฟคเตอร์ใน R
วิธีกำหนดย่อยตามช่วงวันที่ใน R
วิธีการพล็อตเซ็ตย่อยของ data frame ใน R

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

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