我正在try 创建一个函数,该函数给出mrset的统计数据,并且还想添加一些类似的内容,比如如果TOTAL_CASES小于或等于3,则用"--"替换所有列值
我试了一下,但效果不是很好
library(expss)
fun1 <- function(data, varlist, Banner) {
t1 <- eval(rlang::parse_expr(paste0("cross_cpct(data,mrset(",head(varlist,1),"%to%",tail(varlist,1),"),Banner)")))
replace_less_than_3 <- function(variable) {
total_cases <- valid_n(t1[[variable]])
if (total_cases < 3) {
t1[[variable]][, (variable) := "--"]
}
}
lapply(names(t1)[-1], replace_less_than_3)
return(t1)
}
example <- data.frame(org = c("A", "B", "C", "D", "E", "F", "G"),
q1 = c("apple", "apple", NA, "apple", "apple", "apple", NA),
q2 = c(NA, NA, NA, "banana", "banana", "banana", NA),
q3 = c("orange", NA, "orange", "orange", NA, "orange", NA),
region = c("1", "1", "2", "3", "3", "2", "2"))
df <- example
banner <- list(df$region)
debugonce(fun1)
result <- fun1(df, c("q1", "q2", "q3"), banner)
输出应如下所示
1 | 2 | 3 | |
---|---|---|---|
apple | -- | -- | -- |
banana | -- | -- | -- |
orange | -- | -- | -- |
#Total cases | 2 | 2 | 2 |