วิธีเพิ่มแถวทั้งหมดให้กับ data frame ใน r


คุณสามารถใช้วิธีการต่อไปนี้เพื่อเพิ่มแถว “ผลรวม” ที่ด้านล่างของกรอบข้อมูลใน R:

วิธีที่ 1: ใช้ Base R

 rbind(df, data. frame (team=' Total ', t(colSums(df[, -1]))))

วิธีที่ 2: ใช้ dplyr

 library (dplyr)

df %>%
  bind_rows(summarize(., across(where(is.numeric), sum),
                         across(where(is.character), ~' Total ')))

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E', 'F'),
                 assists=c(5, 7, 7, 9, 12, 9),
                 rebounds=c(11, 8, 10, 6, 6, 5),
                 blocks=c(6, 6, 3, 2, 7, 9))

#view data frame
df

  team assists rebound blocks
1 to 5 11 6
2 B 7 8 6
3 C 7 10 3
4 D 9 6 2
5 E 12 6 7
6 F 9 5 9

ตัวอย่างที่ 1: เพิ่มแถวผลรวมโดยใช้ฐาน R

เราสามารถใช้ฟังก์ชัน rbind และ colSums ของฐาน R เพื่อเพิ่มแถวทั้งหมดที่ด้านล่างของกรอบข้อมูล:

 #add total row to data frame
df_new <- rbind(df, data. frame (team=' Total ', t(colSums(df[, -1]))))

#view new data frame
df_new

   team assists rebound blocks
1 to 5 11 6
2 B 7 8 6
3 C 7 10 3
4 D 9 6 2
5 E 12 6 7
6 F 9 5 9
7 Total 49 46 33

โปรดทราบว่ามีการเพิ่มแถวที่ด้านล่างของกรอบข้อมูลที่แสดงผลรวมของค่าในแต่ละคอลัมน์

ตัวอย่างที่ 2: เพิ่มแถวผลรวมโดยใช้ dplyr

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันแพ็คเกจ dplyr ใน R เพื่อเพิ่มแถวทั้งหมดที่ด้านล่างของกรอบข้อมูล:

 library (dplyr)

#add total row to data frame
df_new <- df %>%
            bind_rows(summarize(., across(where(is.numeric), sum),
                                   across(where(is.character), ~' Total ')))

#view new data frame
df_new

   team assists rebound blocks
1 to 5 11 6
2 B 7 8 6
3 C 7 10 3
4 D 9 6 2
5 E 12 6 7
6 F 9 5 9
7 Total 49 46 33

โปรดทราบว่ามีการเพิ่มแถวที่ด้านล่างของกรอบข้อมูลที่แสดงผลรวมของค่าในแต่ละคอลัมน์

โปรดทราบว่าวิธีนี้ให้ผลลัพธ์เหมือนกับวิธี R พื้นฐาน

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

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

วิธีใช้ rbind ใน R
วิธีลบบรรทัดใน R
วิธีคำนวณความแตกต่างระหว่างแถวใน R

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

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