r-markdown - 动态 mutli-line header 与第二行相同
r-markdown - dynamic mutli-line header with second line the same
我正在尝试在 r-markdown 中创建一个 multi-line header 但我遇到了麻烦 1.) 使其动态化 2.) 允许 [=] 的第二行29=]一样。
例如,在下面的数据集中,您可以看到有两组,Petal 和 Septal。每个都有长度和宽度。
library(tidyverse)
data <- iris[c(1, 51, 101), ] %>%
gather(key = key, value = value, -Species) %>%
separate(col = key, into = c("Group", "key"), sep = "\.") %>%
spread(key = key, value = value, )
data
# Species Group Length Width
# 1 setosa Petal 1.4 0.2
# 2 setosa Sepal 5.1 3.5
# 3 versicolor Petal 4.7 1.4
# 4 versicolor Sepal 7.0 3.2
# 5 virginica Petal 6.0 2.5
# 6 virginica Sepal 6.3 3.3
我希望结果是 multi-line header,其中按花部分分组(按唯一值分组,无论它们是什么)以及长度和宽度作为第二行。像下面这样:
# --------------------------------------------
# Petal Sepal
# --------------------------------------------
# Species Length Width Length Width
# --------------------------------------------
# setosa 1.4 0.2 5.1 3.5
# versicolor 4.7 1.4 7 3.2
# virginica 6 2.5 6.3 3.3
# --------------------------------------------
我一直在试验 kable
和 flextable
包,但示例似乎 hard-code 我试图避免的 headers。
有了flextable,应该是这样的:
library(tidyverse)
library(flextable)
data <- iris[c(1, 51, 101), ]
header_df <- tibble( key = colnames(data) ) %>%
separate(col = key, into = c("Group1", "Group2"), sep = "\.", remove = FALSE, fill = "left")
data %>%
select(Species, everything()) %>%
flextable() %>%
set_header_df(mapping = header_df, key = "key") %>%
merge_h(part = "header") %>%
theme_booktabs()
我正在尝试在 r-markdown 中创建一个 multi-line header 但我遇到了麻烦 1.) 使其动态化 2.) 允许 [=] 的第二行29=]一样。
例如,在下面的数据集中,您可以看到有两组,Petal 和 Septal。每个都有长度和宽度。
library(tidyverse)
data <- iris[c(1, 51, 101), ] %>%
gather(key = key, value = value, -Species) %>%
separate(col = key, into = c("Group", "key"), sep = "\.") %>%
spread(key = key, value = value, )
data
# Species Group Length Width
# 1 setosa Petal 1.4 0.2
# 2 setosa Sepal 5.1 3.5
# 3 versicolor Petal 4.7 1.4
# 4 versicolor Sepal 7.0 3.2
# 5 virginica Petal 6.0 2.5
# 6 virginica Sepal 6.3 3.3
我希望结果是 multi-line header,其中按花部分分组(按唯一值分组,无论它们是什么)以及长度和宽度作为第二行。像下面这样:
# --------------------------------------------
# Petal Sepal
# --------------------------------------------
# Species Length Width Length Width
# --------------------------------------------
# setosa 1.4 0.2 5.1 3.5
# versicolor 4.7 1.4 7 3.2
# virginica 6 2.5 6.3 3.3
# --------------------------------------------
我一直在试验 kable
和 flextable
包,但示例似乎 hard-code 我试图避免的 headers。
有了flextable,应该是这样的:
library(tidyverse)
library(flextable)
data <- iris[c(1, 51, 101), ]
header_df <- tibble( key = colnames(data) ) %>%
separate(col = key, into = c("Group1", "Group2"), sep = "\.", remove = FALSE, fill = "left")
data %>%
select(Species, everything()) %>%
flextable() %>%
set_header_df(mapping = header_df, key = "key") %>%
merge_h(part = "header") %>%
theme_booktabs()