วิธีแยก 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

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

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