วิธีใช้ rbindlist ใน r เพื่อสร้างตารางข้อมูลจากหลายรายการ


ฟังก์ชัน rbindlist() ใน R สามารถใช้เพื่อสร้าง data.table จากรายการวัตถุ data.table หรือ data.frame จำนวนมาก

ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:

 rbindlist(l, use. names ="check", fill= FALSE , idcol= NULL )

ทอง:

  • l : รายการที่มีวัตถุ data.table, data.frame หรือรายการ
  • use.names : TRUE ผูกตามชื่อคอลัมน์ FALSE ผูกตามตำแหน่ง
  • fill : TRUE เติมค่าที่หายไปด้วย NA
  • idcol : สร้างคอลัมน์เพื่อระบุว่าแถวเหล่านี้มาจากรายการใด

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: ใช้ rbindlist เพื่อสร้างตารางข้อมูล

สมมติว่าเรามีรายการวัตถุ data.table และ data.frame ใน R ต่อไปนี้:

 library (data.table)

#create data frames and data tables
data1 <- data. table (team=c('A', 'B', 'C'),
                    dots=c(22, 27, 38))

data2 <- data. table (team=c('D', 'E', 'F'),
                    dots=c(22, 14, 20))

data3 <- data. frame (team=c('G', 'H', 'I'),
                    dots=c(11, 15, 18))

#view data frames and data tables
print (data1)
print (data2)
print (data3)

   team points
1: At 22
2:B27
3: C 38
   team points
1:D22
2:E14
3:F20
  team points
1 G 11
2:15 a.m.
3 I 18

เราสามารถใช้ฟังก์ชัน rbindlist() ต่อไปนี้เพื่อผูกรายการวัตถุ data.table และ data.frame ไว้ใน data.table เดียว:

 #define list of objects to bind together
data_list <- list(data1, data2, data3)

#bind together list of objects
big_data <- rbindlist(data_list)

#view result
big_data

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

ผลลัพธ์ที่ได้คือวัตถุ data.table ที่มีเก้าแถวประกอบด้วยแถวจากรายการวัตถุที่เราให้ไว้

นอกจากนี้เรายังสามารถใช้ฟังก์ชัน class() เพื่อตรวจสอบว่าผลลัพธ์เป็นวัตถุ data.table จริงหรือไม่:

 #view class of resulting object
class(big_data)

[1] "data.table" "data.frame"

เราเห็นว่า ผลลัพธ์นั้นเป็นวัตถุ data.table จริงๆ

ข้อดีของการใช้ rbindlist

ทางเลือกอื่นนอกเหนือจากการใช้ rbindlist คือการใช้ do.call กับฟังก์ชัน rbind ในฐาน R:

 #use rbind to bind together list of objects
do. call (" rbind ", data_list)

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

โค้ดนี้ให้ผลลัพธ์เดียวกัน แต่ปรากฎว่า rbindlist เร็วกว่ามาก โดยเฉพาะอย่างยิ่งสำหรับวัตถุ data.table หรือ data.frame ที่มีขนาดใหญ่มาก

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

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

วิธีแปลงตารางเป็น data frame ใน R
วิธีเพิ่มแถวใน data frame ใน R
วิธีแยก data frame ใน R

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

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