我有一個包含多列的資料框,我想添加一個包含所有列總和的頂行。
mydf
id name val1 val2 val3 val4
1 abc 1 3 2.2 3.1
2 def 2 3 3.2 1.3
這就是我正在嘗試的
tot<-mydf %>%
summarize_if(is.numeric, sum, na.rm=TRUE)
但這只會顯示 val1 和 val2 的總和。
Desired output
id name val1 val2 val3 val4
Total 3 6 5.4 4.4
1 abc 1 3 2.2 3.1
2 def 2 3 3.2 1.3
uj5u.com熱心網友回復:
我們可能需要 adorn_totals
library(janitor)
library(dplyr)
mydf %>%
adorn_totals()
-輸出
id name val1 val2 val3 val4
1 abc 1 3 2.2 3.1
2 def 2 3 3.2 1.3
Total - 3 6 5.4 4.4
或使用 dplyr
library(dplyr)
mydf %>%
summarise(id = c('', id), name = c('Total', name),
across(starts_with('val'), ~c(sum(., na.rm = TRUE), .)))
id name val1 val2 val3 val4
1 Total 3 6 5.4 4.4
2 1 abc 1 3 2.2 3.1
3 2 def 2 3 3.2 1.3
資料
mydf <- structure(list(id = 1:2, name = c("abc", "def"), val1 = 1:2,
val2 = c(3L, 3L), val3 = c(2.2, 3.2), val4 = c(3.1, 1.3)),
class = "data.frame", row.names = c(NA,
-2L))
uj5u.com熱心網友回復:
你可以使用tibble::add_row:
library(tibble)
add_row(mydf, name = "Total",
summarize(mydf, across(starts_with("val"), ~ sum(., na.rm = T))))
默認情況下,它被附加到底部。
輸出
id name val1 val2 val3 val4
1 1 abc 1 3 2.2 3.1
2 2 def 2 3 3.2 1.3
3 NA Total 3 6 5.4 4.4
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318525.html
標籤:r
