我有一个数据框(下面的示例),我想使用 R 中的包将其放入 HTML 表中。kableExtra
我的其中一列 ( pos
) 是一个分组变量,我想用它来添加组行标签在表中。我知道我可以使用pack_rows()
from 的函数来做到这一点kableExtra
,但我想知道是否有某种方法可以动态地执行此操作。例如,我pos
在示例数据集中有三个唯一的字符串值,我可以轻松调用三个pack_rows()
函数并提供各自的索引(第一个值和平均行)。然而,我可能并不总是拥有三个独特的pos
字符串(例如,有时我可能有两个、四个或五个),并且每组的行/观察数将在我的真实数据集中发生变化。因为我想用它来生成报告,所以我希望有一个技巧可以以某种方式自动化这个过程。谢谢。
library(tidyverse)
library(kableExtra)
set.seed(10)
name <- paste("Name", LETTERS[1:15])
var1 <- rep(rnorm(15, 100, 20))
var2 <- rep(rnorm(15, 100, 20))
var3 <- rep(rnorm(15, 100, 20))
var4 <- rep(rnorm(15, 100, 20))
pos <- c(rep("DEF", 5), rep("MID", 5), rep("FWD", 5))
df <- data.frame(name, var1, var2, var3, var4, pos)
agg_df <- bind_rows(
df,
df %>% group_by(pos) %>%
summarise_at(vars(var1:var4), mean) %>%
mutate(name = "mean")
) %>%
arrange(pos, name)
agg_df %>%
kbl() %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
fixed_thead = TRUE)
一种选择是使用
Reduce
或purrr::reduce
通过添加标题行pack_rows()
。为此,我首先创建一个包含组start
和end
行以及组的列表label
。