非常感谢 {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。
此格式当前不可用作
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