format_xx 四舍五入后不去掉 0

问题描述 投票:0回答:1

非常感谢 {tern} 包的开发,我们非常喜欢使用这样的包。

我想和你确认一下

format_xx()
。使用不同的代码时,format_value 将具有不同的值。见下文

> format_value(0.201,format='xx.xx')
[1] "0.20"
> format_value(0.201,format=format_xx('xx.xx'))
[1] "0.2"

“0.20”是我的首选格式。我问这个问题的原因是我正在使用analyze_vars进行计算和格式化。

“rtables”中当前的

list_valid_format_labels()
不包含我想使用的格式“xx.x (xx.xx)”。所以我尝试在
format_xx 
 中使用 
analyze_vars

library(dplyr)
library(rtables)
library(tern)
lyt<-
  
  basic_table()%>%
  
  split_cols_by(var= 'ARM')%>%
  
  analyze_vars(vars='AGE',
               
               .stats = c("mean_sd"),
               .formats = c(
                 "mean_sd" = format_xx("xx.x (xx.xx)")
               ),
               .labels = c(
                 "mean_sd" = "Mean (SD)"
               )
  )


build_table(lyt,pharmaverseadam::adsl)

结果将会是

              Placebo     Xanomeline High Dose   Xanomeline Low Dose   Screen Failure
—————————————————————————————————————————————————————————————————————————————————————
Mean (SD)   75.2 (8.59)       74.4 (7.89)            75.7 (8.29)         75.1 (9.7)  

所以我想知道是否有其他功能使用

tern::analyze_vars
(我真的很喜欢这个函数将所有变量按顺序放入函数中),并可以选择
.formats
来指定格式?这就是
format_xx()
最后不掉 0。

nest-tern
1个回答
0
投票

此格式当前不可用作

formatters
tern
中的预设,但您可以创建自定义格式函数,如下所示,该函数应该可以完成您想要执行的操作:

library(dplyr)
library(rtables)
library(tern)

format_fixed_dp <- function(x, ...) {
    if (any(is.na(x))) {
        "NA"
    } else if (x[1] == 0) {
        "0"
    } else {
        sprintf("%.1f (%.2f)", x[1], x[2])
    }
}

lyt<-
    
    basic_table()%>%
    
    split_cols_by(var= 'ARM')%>%
    
    analyze_vars(vars='AGE',
                 
                 .stats = c("mean_sd"),
                 .formats = c(
                     "mean_sd" = format_fixed_dp
                 ),
                 .labels = c(
                     "mean_sd" = "Mean (SD)"
                 )
    )


build_table(lyt,pharmaverseadam::adsl)
#>               Placebo     Xanomeline High Dose   Xanomeline Low Dose   Screen Failure
#> —————————————————————————————————————————————————————————————————————————————————————
#> Mean (SD)   75.2 (8.59)       74.4 (7.89)            75.7 (8.29)        75.1 (9.70)

创建于 2024-11-07,使用 reprex v2.1.1

© www.soinside.com 2019 - 2024. All rights reserved.