如何为R语言表格对象的所有元素添加字符串(百分比符号)
解决表格添加百分比符号且保留结构的问题
我懂你这个痛点!直接用paste确实会把好好的表格给拆成字符向量,太闹心了。其实咱们可以在保留表格结构的前提下给每个数值加上%符号,有两种常用的思路,看你需求来选:
方法一:直接修改表格元素(保留表格结构,转成字符型)
因为table本质是带维度信息的数组,咱们可以直接对表格的所有元素做向量化的字符串拼接,同时保留原有的结构。只需要用[]来定位元素,赋值回去就不会破坏结构:
# 先模拟你的数据流程 vecA <- c("A", "B", "A", "C", "B", "A") vecB <- c("X", "X", "Y", "Y", "X", "Y") my.table <- table(vecA, vecB) my.table <- round(prop.table(my.table, margin = 2) * 100, digits = 2) # 关键步骤:给每个元素加%,同时保留表格结构 my.table[] <- paste0(my.table[], "%") # 查看结果结构,还是table类型 str(my.table)
执行后你会发现,表格的行、列名完全保留,只是每个数值都带上了%符号,数据结构依然是table,不是扁平的字符向量。
方法二:保留数值类型,展示时添加%(更适合后续计算)
如果你之后还需要对这些百分比数值做进一步的计算,把它们转成字符型就不方便了。这种情况下,建议在输出展示的时候再添加%符号,比如用knitr包的kable函数来格式化:
library(knitr) # 保留原有的数值型表格 my.table <- round(prop.table(table(vecA, vecB), margin = 2) * 100, digits = 2) # 输出带%的格式化表格 kable(my.table, format = "markdown", col.names = colnames(my.table), caption = "按列计算的百分比表格", digits = 2, format.args = list(suffix = "%"))
这样底层数据依然是数值,方便后续分析,而输出的表格会自动带上%符号,完美兼顾两种需求。
内容的提问来源于stack exchange,提问作者DorinPopescu
相关产品推荐
相关产品推荐

