我有两个表,我想将它们合并起来创建一个汇总表
df1 <- data.frame(median=c(151, 98, 125, 47),
Q25=c(148, 90, 120, 44),
Q75=c(158, 104, 132, 53),
pass_or_fail=c('pass')
)
row.names(df1)<-c("param1", "param2", "param3", "param4")
df2 <- data.frame(median=c(148, 95, 135, 40),
Q25=c(140, 88, 130, 35),
Q75=c(150, 100, 141, 45),
pass_or_fail=c('fail')
)
row.names(df2)<-c("param1", "param2", "param3", "param4")
rbind(df1, df2)
我正在寻找的输出如下所示,其中两个数据帧之间共享的行名,列按“通过”或“失败”分组,值显示为中位数,IQR 放在括号中
rbind 的结果会更改行名称,因为不允许重复名称。我想知道如何克服行名被重命名的问题,以及是否可以使用 kable 或其他函数将 IQR 显示在括号中。
library(dplyr)
library(tibble)
library(tidyr)
bind_rows(rownames_to_column(df1),
rownames_to_column(df2)) %>%
mutate(stat = paste0(median, " (", Q25, "-", Q75, ")"), .keep = "unused") %>%
pivot_wider(names_from = pass_or_fail, values_from = stat) %>%
column_to_rownames()
#> pass fail
#> param1 151 (148-158) 148 (140-150)
#> param2 98 (90-104) 95 (88-100)
#> param3 125 (120-132) 135 (130-141)
#> param4 47 (44-53) 40 (35-45)
创建于 2024-07-07,使用 reprex v2.0.2