วิธีแยก data frame ใน r (พร้อมตัวอย่าง)
คุณสามารถใช้หนึ่งในสามวิธีต่อไปนี้เพื่อแบ่งเฟรมข้อมูลออกเป็นบล็อกข้อมูลขนาดเล็กหลายบล็อกใน R:
วิธีที่ 1: แบ่งกรอบข้อมูลด้วยตนเองตามค่าแถว
#define first n rows to include in first data frame n <- 4 #split data frame into two smaller data frames df1 <- df[row. names (df) %in% 1:n, ] df2 <- df[row. names (df) %in% (n+1):nrow(df), ]
วิธีที่ 2: แบ่ง data frame ออกเป็น n data frame ที่มีขนาดเท่ากัน
#define number of data frames to split into n <- 3 #split data frame into n equal-sized data frames split(df, factor(sort(rank(row. names (df)) %% n)))
วิธีที่ 3: แยกกรอบข้อมูลตามค่าคอลัมน์
#split data frame based on particular column value df1 <- df[df$column_name == 0, ] df2 <- df[df$column_name != 0, ]
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:
#create data frame df <- data. frame (ID=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), sales=c(7, 8, 8, 7, 9, 7, 8, 9, 3, 3, 14, 10), leads=c(0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0)) #view data frame df Sales lead ID 1 1 7 0 2 2 8 0 3 3 8 1 4 4 7 1 5 5 9 0 6 6 7 1 7 7 8 1 8 8 9 0 9 9 3 1 10 10 3 0 11 11 14 1 12 12 10 0
วิธีที่ 1: แบ่งกรอบข้อมูลด้วยตนเองตามค่าแถว
โค้ดต่อไปนี้แสดงวิธีการแบ่งเฟรมข้อมูลออกเป็นบล็อกข้อมูลขนาดเล็กสองบล็อก โดยบล็อกแรกประกอบด้วยบรรทัดที่ 1 ถึง 4 และบล็อกที่สองประกอบด้วยบรรทัดที่ 5 ถึงบรรทัดสุดท้าย:
#define row to split on
n <- 4
#split into two data frames
df1 <- df[row. names (df) %in% 1:n, ]
df2 <- df[row. names (df) %in% (n+1):nrow(df), ]
#view resulting data frames
df1
Sales lead ID
1 1 7 0
2 2 8 0
3 3 8 1
4 4 7 1
df2
Sales lead ID
5 5 9 0
6 6 7 1
7 7 8 1
8 8 9 0
9 9 3 1
10 10 3 0
11 11 14 1
12 12 10 0
วิธีที่ 2: แบ่ง data frame ออกเป็น n data frame ที่มีขนาดเท่ากัน
รหัสต่อไปนี้แสดงวิธีการแบ่ง data frame ออกเป็น n data frame ที่มีขนาดเท่ากัน:
#define number of data frames to split into n <- 3 #split data frame into n equal-sized data frames split(df, factor(sort(rank(row. names (df)) %% n))) $`0` Sales lead ID 1 1 7 0 2 2 8 0 3 3 8 1 4 4 7 1 $`1` Sales lead ID 5 5 9 0 6 6 7 1 7 7 8 1 8 8 9 0 $`2` Sales lead ID 9 9 3 1 10 10 3 0 11 11 14 1 12 12 10 0
ผลลัพธ์ที่ได้คือเฟรมข้อมูลสามเฟรมที่มีขนาดเท่ากัน
วิธีที่ 3: แยกกรอบข้อมูลตามค่าคอลัมน์
รหัสต่อไปนี้แสดงวิธีการแบ่งเฟรมข้อมูลออกเป็นสองเฟรมข้อมูลตามค่าของคอลัมน์ที่ระบุ:
#split data frame based on particular column value df1 <- df[df$leads == 0, ] df2 <- df[df$leads != 0, ] #view resulting data frames df1 Sales lead ID 1 1 7 0 2 2 8 0 5 5 9 0 8 8 9 0 10 10 3 0 12 12 10 0 df2 Sales lead ID 3 3 8 1 4 4 7 1 6 6 7 1 7 7 8 1 9 9 3 1 11 11 14 1
โปรดทราบว่า df1 มีแถวทั้งหมดที่ “leads” เท่ากับศูนย์ในกรอบข้อมูลดั้งเดิม และ df2 มีแถวทั้งหมดที่ “leads” เท่ากับหนึ่งแถวในกรอบข้อมูลดั้งเดิม
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน R:
วิธีผสานหลายเฟรมข้อมูลใน R
วิธีซ้อนคอลัมน์ data frame ใน R
วิธีเพิ่มคอลัมน์ใน data frame ตามคอลัมน์อื่นใน R