【问题标题】:Formatting multiple columns with flextable r package使用 flextable r 包格式化多列
【发布时间】:2018-09-02 13:30:01
【问题描述】:

是否可以使用flexitable用一行脚本格式化多个列?

该示例包括两种不同类型的双精度变量。我愿意:

  1. 将大于 1000 的变量舍入到最接近的 1000 并添加千位逗号格式,并且
  2. 小于一到两位小数的四舍五入变量

这使用 flextable 相对简单,但是对于更大的数据集来说会变得很麻烦。我找不到更有效的方法。

我可以使用 dplyr 来预处理数据(尽管逗号格式需要将变量类型从双精度更改为字符)。 如果可能的话,我更喜欢在 flextable 中执行此操作。 我知道 Huxtable 可以进行多列格式设置。 用户是否可以创建定制的 set_formatter_type 函数?

MWE

set.seed(100)

tib <- tibble(a = letters[1:4],
              b = runif(4)*sample(c(10000, 1000000, 10000000), 4, replace = TRUE),
              c = runif(4)*sample(c(10000, 1000000, 10000000), 4, replace = TRUE),
              d = runif(4)*sample(c(10000, 1000000, 10000000), 4, replace = TRUE),
              e = runif(4),
              f = runif(4))


  regulartable(tib) %>%
  set_formatter(b = function(x) format(round(x, -3), big.mark = ",")) %>% 
  set_formatter(c = function(x) format(round(x, -3), big.mark = ",")) %>% 
  set_formatter(d = function(x) format(round(x, -3), big.mark = ",")) %>% 
  set_formatter(e = function(x) round(x, 2)) %>%
  set_formatter(f = function(x) round(x, 2)) %>%
  print(preview = "docx")

【问题讨论】:

    标签: r flextable


    【解决方案1】:

    是的,文档可以在这里找到:https://davidgohel.github.io/flextable/articles/format.html#set_formatter-function

    这里: https://davidgohel.github.io/flextable/reference/set_formatter.html

    set_formatter(b = function(x) format(round(x, -3), big.mark = ","), 
                  c = function(x) format(round(x, -3), big.mark = ","), 
                  d = function(x) format(round(x, -3), big.mark = ","), 
                  e = function(x) round(x, 2), 
                  f = function(x) round(x, 2))
    

    【讨论】:

    • 抱歉,如果每列没有单独的代码行,我似乎无法应用链接来格式化多列。如果有这样的功能,我的问题可能会更好:set_formatter(x, col_to_format(b, c, d) = function(x) format(round(x, -3), big.mark = ","))(我已经编造了 col_to_format 参数)
    • 不,这样的功能不存在(或者它会被记录在案;)。提供了 2 个函数:一个是按列的,另一个是按类型的。你当然可以编写你的 set_formatter 函数。
    • 非常感谢您的澄清。这确实是一个功能请求。
    • @DavidGohel,您能否链接或解释更多有关类型格式的信息?我有一个类似的问题,但我无法具体引用列的名称,因为它们是动态的。
    • @Tjebo 这些新功能应该会有所帮助:) github.com/davidgohel/flextable/blob/master/R/formatters.R#L74
    猜你喜欢
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多