วิธีซ้อนคอลัมน์ data frame ใน r
บ่อยครั้งที่คุณอาจต้องการซ้อนคอลัมน์ data frame สองคอลัมน์ขึ้นไปให้เป็นคอลัมน์เดียวใน R
ตัวอย่างเช่น คุณอาจต้องการเริ่มต้นจากสิ่งนี้:
person trial outcome1 outcome2 A 1 7 4 A 2 6 4 B 1 6 5 B 2 5 5 C 1 4 3 C 2 4 2
สำหรับการที่:
person trial outcomes value A 1 outcome1 7 A 2 outcome1 6 B 1 outcome1 6 B 2 outcome1 5 C 1 outcome1 4 C 2 outcome1 4 A 1 outcome2 4 A 2 outcome2 4 B 1 outcome2 5 B 2 outcome2 5 C 1 outcome2 3 C 2 outcome2 2
บทช่วยสอนนี้จะอธิบายสองวิธีที่คุณสามารถใช้ใน R เพื่อทำสิ่งนี้
วิธีที่ 1: ใช้ฟังก์ชันกองซ้อนใน Base R
รหัสต่อไปนี้แสดงวิธีการกองคอลัมน์โดยใช้ฟังก์ชัน กองซ้อน ในฐาน R:
#create original data frame data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'), trial=c(1, 2, 1, 2, 1, 2), outcome1=c(7, 6, 6, 5, 4, 4), outcome2=c(4, 4, 5, 5, 3, 2)) #stack the third and fourth columns cbind (data[1:2], stack (data[3:4])) person trial values ind 1 A 1 7 outcome1 2 A 2 6 outcome1 3 B 1 6 outcome1 4 B 2 5 outcome1 5 C 1 4 outcome1 6 C 2 4 outcome1 7 A 1 4 outcome2 8 A 2 4 outcome2 9 B 1 5 outcome2 10 B 2 5 outcome2 11 C 1 3 outcome2 12 C 2 2 outcome2
วิธีที่ 2: ใช้ฟังก์ชัน Melt ของ Reshape2
รหัสต่อไปนี้แสดงวิธีการซ้อนคอลัมน์โดยใช้ฟังก์ชัน ละลาย ในไลบรารี reshape2 :
#loadlibrary library(reshape2) #create original data frame data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'), trial=c(1, 2, 1, 2, 1, 2), outcome1=c(7, 6, 6, 5, 4, 4), outcome2=c(4, 4, 5, 5, 3, 2)) #melt columns of data frame melt(data, id. var = c(' person ', ' trial '), variable. name = ' outcomes ') person trial outcomes value 1 A 1 outcome1 7 2 A 2 outcome1 6 3 B 1 outcome1 6 4 B 2 outcome1 5 5 C 1 outcome1 4 6 C 2 outcome1 4 7 A 1 outcome2 4 8 A 2 outcome2 4 9 B 1 outcome2 5 10 B 2 outcome2 5 11 C 1 outcome2 3 12 C 2 outcome2 2
คุณสามารถดูเอกสารฉบับเต็มเกี่ยวกับฟังก์ชันผสาน ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
วิธีเปลี่ยนสองคอลัมน์ใน R
วิธีเปลี่ยนชื่อคอลัมน์ใน R
วิธีรวมคอลัมน์เฉพาะใน R