gpt4 book ai didi

R - 打印列总和如下表

转载 作者:行者123 更新时间:2023-12-05 00:19:25 25 4
gpt4 key购买 nike

示例:我有一个简单的数据框

df <- data.frame(date=c("2016-01-01", "2016-01-02")
, sales_a = c(2,3)
, sales_b = c(1,1)
, diff=c(1,2))

我目前正在 RMarkDown 文档中使用 kable 打印此 df。我想在下面生成一行,其中包含列的总和(不是日期),并用一条线将 df 与总数分开。这是否可以在任何 R 包中实现,而无需编写我不太熟悉的 latex 代码?

谢谢

最佳答案

我认为你不能在 Markdown 的最后一行和倒数第二行之间画一条线。但是计算和包括汇总行相对简单。

(顺便说一句:我在 data.frame 中包含了 stringsAsFactors,为了优先和易于处理新字符串。)

df <- data.frame(date=c("2016-01-01", "2016-01-02")
, sales_a = c(2,3)
, sales_b = c(1,1)
, diff=c(1,2)
, stringsAsFactors = FALSE)
func <- function(z) if (is.numeric(z)) sum(z) else ''
sumrow <- as.data.frame(lapply(df, func))
sumrow
# date sales_a sales_b diff
# 1 5 2 3

与整个 data.frame 结合起来相对简单:
library(knitr)
kable(rbind(df, sumrow))
# |date | sales_a| sales_b| diff|
# |:----------|-------:|-------:|----:|
# |2016-01-01 | 2| 1| 1|
# |2016-01-02 | 3| 1| 2|
# | | 5| 2| 3|

如果您希望能够突出显示/标记特定的摘要行:
kable(rbind(cbind(' '=' ', df),
cbind(' '='Total', sumrow)))
# | |date | sales_a| sales_b| diff|
# |:-----|:----------|-------:|-------:|----:|
# | |2016-01-01 | 2| 1| 1|
# | |2016-01-02 | 3| 1| 2|
# |Total | | 5| 2| 3|

“总计”标签当然可以放在任何地方。您可能会尝试手动添加一行(字符),但我不确定它看起来是否正确。

关于R - 打印列总和如下表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36067598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com