กำลังพยายามแยกกรอบข้อมูลตามหัวเรื่องในคำสั่งเดียว [ซ้ำกัน]

สมมติว่าฉันมี data frame ขนาดใหญ่ในรูปแบบยาว โดยแต่ละวิชามี 5 แถว รวมทั้งหมด 5 วิชา

x=c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5)
df=data.frame(x, 1:25)

ตอนนี้ฉันต้องการแยกสิ่งนี้ออกเป็น 5 กรอบข้อมูลแยกกัน หนึ่งเฟรมสำหรับแต่ละวิชา ฉันรู้ว่าฉันสามารถทำได้:

s01=df[df$x==1,]

5 ครั้ง แต่ฉันต้องการสร้างเฟรมข้อมูลทั้งห้าเฟรมในคราวเดียวโดยใช้คำสั่งเดียว มีวิธีการทำเช่นนี้ (เช่น for loop หรือบางอย่างเช่น lapply) หรือไม่? ฉันลองใช้ for loop แต่ไม่แน่ใจว่าจะทำให้มันส่งออกวัตถุ 5 ชิ้นแยกกันด้วยชื่อที่แตกต่างกันได้อย่างไร


person cmpsych93    schedule 04.07.2016    source แหล่งที่มา


คำตอบ (1)


คุณสามารถทำได้ง่ายๆ:

result <- split(df, df$x)

สิ่งนี้จะกลับมาในรายการเฟรมข้อมูลที่แตกต่างกันตามคอลัมน์ x คุณสามารถนำออกมาได้เช่นเฟรมข้อมูลแรกโดย

result[[1]]
person Zheyuan Li    schedule 04.07.2016