示例:我有一个简单的数据框
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包中都可能实现吗?
谢谢
3条答案
按热度按时间ecfdbz9o1#
我不认为你可以在markdown中的最后一行和倒数第二行之间画一条线,但是计算和包括一个摘要行是相对直接的。
(BTW:我在data.frame中包含了
stringsAsFactors
,这是为了方便处理新字符串。)与整个数据相合并相对简单。frame:
如果希望能够突出显示/标记特定汇总行:
“总计”标签当然可以放在任何地方。你可以尝试手动添加一行(字符),但我不确定它看起来是否正确。
63lcw9qa2#
我以https://stackoverflow.com/a/36069586/8076560的答案为灵感,用RStudio在R中创建了以下内容,然后可以根据需要将表格导出(编织)为pdf/html。
现在是代码...
ttygqcqt3#
这是一个tidyverse解决方案,使用了
booktabs
kable选项。add_totals
函数保持简单,它在任何非数字列中显示“Total”。总计上方的水平线是使用
linesep
kable选项添加的,该选项默认为c("", "", "", "", "\\addlinespace")
,这意味着每隔5行添加一个额外的空格,而每隔1到4行则不添加任何空格(""
),我在倒数第二行后添加了一个\midrule
,而不是这个默认值:这意味着在行数减2(nrow(df) - 2
)的行数之后不添加任何内容(""
),并且在下一行(倒数第二行)之后添加水平行(\midrule
)。