r - R中的formattable可以按变量对表进行分组吗?
问题描述
是否可以使用按数据框中的变量之一分组的 formattable 生成表格?可以将表格划分/拆分/分组为连续打印的单独表格,或者将分组分隔在一个表格中。
如果 formattable 无法实现,那么可以推荐哪些其他包和功能来根据所描述的需求创建漂亮的表格?
在此数据框的示例中:
df <- tibble(
x = c(1:100),
y = c("email","postal")[rep(c(1,2), times=50)],
c = rep(c("cat1","cat2","cat3","cat4"), times=25) )
我希望 formattable 为“x”和“y”两列的变量 c 中的每个 cat1 到 cat4 生成 4 个表,或者为每个 cat1 到 cat4 生成 1 个包含 4 个部分的表。
希望任何人都可以提供帮助。
在第一次回复/评论后添加:更具体地说,如何使用 formattable 一次性将 tab1 转换为 tab4,最好使用 c 作为每个表之间的标签?
library(formattable)
tab1 <- subset(df, c == "cat1")
tab2 <- subset(df, c == "cat2")
tab3 <- subset(df, c == "cat3")
tab4 <- subset(df, c == "cat4")
formattable( tab1 , list(c = FALSE ))
formattable( tab2 , list(c = FALSE ))
formattable( tab3 , list(c = FALSE ))
formattable( tab4 , list(c = FALSE ))
第三次编辑:我可能难以描述最终的需求。@ricoderks 的建议几乎把我带到了那里.. 它一口气完成了,但最后一件事是我希望所有这些表都显示在一个视图/文件/输出/面板中,而不是像 @ricoderks 代码那样显示四个。这意味着我只想要一个表格输出,该表格输出在变量 c 的这 4 个组中进行排序和划分,可以使用 formattable 或其他类似的功能/工具。我一直在从你的提示中学习,但仍然不是我想要的。再次非常感谢您的努力。
解决方案
使用dplyr
,您可以基于组拆分数据框并获取带有分隔数据框的列表:
library(dplyr)
list <- df %>% group_split(c)
names(list) <- unique(df$c)
这里的格式是list
:
> list
$cat1
# A tibble: 25 x 3
x y c
<int> <chr> <chr>
1 1 email cat1
2 5 email cat1
3 9 email cat1
4 13 email cat1
5 17 email cat1
6 21 email cat1
7 25 email cat1
8 29 email cat1
9 33 email cat1
10 37 email cat1
# … with 15 more rows
$cat2
# A tibble: 25 x 3
x y c
<int> <chr> <chr>
1 2 postal cat2
2 6 postal cat2
3 10 postal cat2
4 14 postal cat2
5 18 postal cat2
6 22 postal cat2
7 26 postal cat2
8 30 postal cat2
9 34 postal cat2
10 38 postal cat2
# … with 15 more rows
$cat3
# A tibble: 25 x 3
x y c
<int> <chr> <chr>
1 3 email cat3
2 7 email cat3
3 11 email cat3
4 15 email cat3
5 19 email cat3
6 23 email cat3
7 27 email cat3
8 31 email cat3
9 35 email cat3
10 39 email cat3
# … with 15 more rows
$cat4
# A tibble: 25 x 3
x y c
<int> <chr> <chr>
1 4 postal cat4
2 8 postal cat4
3 12 postal cat4
4 16 postal cat4
5 20 postal cat4
6 24 postal cat4
7 28 postal cat4
8 32 postal cat4
9 36 postal cat4
10 40 postal cat4
# … with 15 more rows
attr(,"ptype")
# A tibble: 0 x 3
# … with 3 variables: x <int>, y <chr>, c <chr>
是你要找的吗?
推荐阅读
- python - Django:打印查询集时出错
- python - 如何像 FFMPEG 一样在 Python 中从音频文件创建频谱图?
- php - 在laravel 7中将提交表单传递给控制器
- read-the-docs - 托管本地 RTD 服务器时出现“主机未知,无法阅读文档”
- encoding - Jsoup 解析不可读的字符
- javascript - 是否有可以比较两个 json 文件并将比较结果生成为 html 的 java/JS 库?
- java - JDBC - MySQL 时间戳 - 错误代码:1292。日期时间值不正确
- javascript - 通过 JavaScript 复制具有值的表单
- amazon-web-services - 如何获取 Amazon EC2 Spot 实例中断率
- python - VS Code 代码运行器扩展:由于空格而努力将 Python PATH 添加到 settings.json