r - R gt summary_rows 比率总行
问题描述
我正在使用出色的gt
软件包来帮助在R
. 我真的很喜欢如何使用它来制作 Total 列,但我正在努力尝试做任何超出简单sum
或mean
. 我需要为我的几个专栏做一些更像 SUMPRODUCT 的事情。假设我有以下数据。它有一denom
列我想将几个分子除以。
library(dplyr)
library(gt)
set.seed(1)
df <- data.frame(some_letter = sample(letters, size = 10, replace = FALSE),
denom = sample(1:100, size = 10, replace = FALSE),
num1 = sample(100:200, size = 10, replace = FALSE),
num2 = sample(100:200, size = 10, replace = FALSE)) %>%
mutate(rat1 = round(num1 / denom, 2),
rat2 = round(num2 / denom, 2))
some_letter denom num1 num2 rat1 rat2
1 y 54 188 119 3.48 2.20
2 d 74 143 127 1.93 1.72
3 g 7 178 200 25.43 28.57
4 a 73 132 143 1.81 1.96
5 b 79 183 186 2.32 2.35
6 k 85 134 169 1.58 1.99
7 n 37 169 139 4.57 3.76
8 r 89 173 197 1.94 2.21
9 w 94 141 124 1.50 1.32
10 j 34 137 195 4.03 5.74
所以我想得到一个TOTAL
列是sum
fordenom
和。使用该功能非常容易。但我需要的两个比率列不仅如此。我不能只是加起来得到正确的比例。这些列必须是and 。num1
num2
gt
summary_rows
TOTAL
sum
rat1
rat2
TOTAL
sum(num1) / sum(denom)
sum(num1) / sum(denom)
所以这适用于简单的列。
gt(df) %>%
summary_rows(fns = list(TOTAL = "sum"),
columns = vars(denom, num1, num2))
对于其他列,我尝试了以下方法无济于事。
gt(df) %>%
summary_rows(fns = list(TOTAL = "sum"),
columns = vars(denom, num1, num2)) %>%
summary_rows(fns = list(TOTAL = ~sum(.) / sum(denom)), columns = vars(rat1, rat2))
gt(df) %>%
summary_rows(fns = list(TOTAL = "sum"),
columns = vars(denom, num1, num2)) %>%
summary_rows(fns = list(TOTAL = sum(.) / sum(denom)), columns = vars(rat1, rat2))
而且我知道我可以单独计算它并将rbind
其放在底部,但是该summary_rows
函数提供了非常棒的格式,而无需做任何额外的事情。
解决方案
我遇到了同样的问题,除了整理代码传递r1_total
和函数r2_total
的方式之外,没有找到更好的解决方案:summary_rows( )
r1_total <- sum(df$num1) / sum(df$denom)
r2_total <- sum(df$num2) / sum(df$denom)
gt(df) %>%
summary_rows(fns = list(TOTAL = "sum"), columns = vars(denom, num1, num2)) %>%
summary_rows(fns = list(TOTAL = ~ c(r1_total), columns = vars(rat1)) %>%
summary_rows(fns = list(TOTAL = ~ c(r2_total), columns = vars(rat2))
或者
gt(df) %>%
summary_rows(fns = list(TOTAL = "sum"), columns = vars(denom, num1, num2)) %>%
summary_rows(fns = list(TOTAL = ~ sum(df$num1) / sum(df$denom) ), columns = vars(rat1)) %>%
summary_rows(fns = list(TOTAL = ~ sum(df$num2) / sum(df$denom) ), columns = vars(rat2))
推荐阅读
- gradle - Gitlab CI 缓存更新
- angular - 错误 NG8002:无法绑定到“formGroup”,因为它不是“form”的已知属性。在角 9
- python-3.x - SSL:证书失败
- ios - 使用 UIScreen 宽度属性打破了 UITableViewCell 的约束
- c# - 从 C++ dll 访问 C# 中的行主要参数
- c# - 在 Docker 中运行 ASP.NET Core 应用程序时丢失文件:容器运行时如何显示文件?
- angular - Ionic 5 angular firebase 显示存储中的 pdf
- android - 不兼容的类型:Intent 无法转换为 Callback
- android - 一种将整数转换为仅具有字母 1...9 和 a...z 的类型的算法
- javascript - Google Forms / Apps Script / Hangouts Chat - 机器人消息内容单独发送而不是一起发送