วิธีแปลงรายการเป็น data frame ใน r
มีหลายกรณีที่คุณอาจต้องการแปลงรายการเป็นเฟรมข้อมูลใน R บทช่วยสอนนี้จะอธิบายวิธีต่างๆ สามวิธีในการดำเนินการนี้
วิธีที่ 1: อิง R
ข้อมูลโค้ดต่อไปนี้แสดงวิธีการแปลงรายการเป็นเฟรมข้อมูลโดยใช้ R ฐานเท่านั้น:
#create list my_list <- list(letters[1:5], letters[6:10]) my_list [[1]] [1] "a" "b" "c" "d" "e" [[2]] [1] "f" "g" "h" "i" "j" #convert list to data frame data.frame(t(sapply(my_list,c))) X1 X2 X3 X4 X5 1 abcde 2 fghij
ในตัวอย่างนี้ sapply จะแปลงรายการเป็นเมทริกซ์ จากนั้น data.frame จะแปลงเมทริกซ์เป็นเฟรมข้อมูล ผลลัพธ์ที่ได้คือกรอบข้อมูลสองแถวห้าคอลัมน์
วิธีที่ 2: DataTable
ข้อมูลโค้ดต่อไปนี้แสดงวิธีแปลงรายการสองรายการที่ซ้อนกันเป็นกรอบข้อมูลที่มีสองแถวและสามคอลัมน์โดยใช้ฟังก์ชัน rbindlist ของไลบรารี data.table :
#load data.table library library(data.table) #create list my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3), b = list(var1 = 4, var2 = 5, var3 = 6)) my_list $a $a$var1 [1] 1 $a$var2 [1] 2 $a$var3 [1] 3 $b $b$var1 [1] 4 $b$var2 [1] 5 $b$var3 [1] 6 #convert list to data frame rbindlist(my_list) var1 var2 var3 1:1 2 3 2:4 5 6
ผลลัพธ์ที่ได้คือตารางข้อมูลที่มีสองแถวและสามคอลัมน์ หากคุณต้องการแปลงตารางข้อมูลนี้เป็น data frame คุณสามารถใช้ as.data.frame(DT) ได้
เมธอดนี้จะแปลงรายการเป็นเฟรมข้อมูลเร็วกว่าวิธีก่อนหน้า หากคุณทำงานกับชุดข้อมูลที่มีขนาดใหญ่มาก
วิธีที่ 3: Dplyr
ข้อมูลโค้ดต่อไปนี้แสดงวิธีแปลงรายการสองรายการที่ซ้อนกันเป็นกรอบข้อมูลที่มีสองแถวและสามคอลัมน์โดยใช้ฟังก์ชัน bind_rows ของไลบรารี dplyr :
#loadlibrary library(dplyr) #create list my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3), b = list(var1 = 4, var2 = 5, var3 = 6)) my_list $a $a$var1 [1] 1 $a$var2 [1] 2 $a$var3 [1] 3 $b $b$var1 [1] 4 $b$var2 [1] 5 $b$var3 [1] 6 #convert list to data frame bind_rows(my_list) # A tibble: 2 x 3 var1 var2 var3 1 1 2 3 2 4 5 6
ผลลัพธ์ที่ได้คือกรอบข้อมูลที่มีสองแถวและสามคอลัมน์
วิธีนี้ยังมีแนวโน้มที่จะทำงานได้เร็วกว่าฐาน R เมื่อทำงานกับชุดข้อมูลขนาดใหญ่