我正在try 创建下面的摘要,但在创建摘要时,子函数ROUNVAL给出了Tabl1错误,否则Tabl2工作正常.

我不能更改数据,我必须处理NA,所以我应该在函数perc_75中更新什么才能获得TAB1的输出


library(expss)

dat <- data.frame(cc=c("AMB","CCU","DDI","GLL","MNA","KMB","LTI","DDI","GLL","MNA","CCU","AMB","KMB","LTI","DDI","CCU","GLL"),
                     duration=c(1,NA,66,NA,5,NA,3,1,NA,21,NA,25,NA,17,NA,NA,6),
                     duration2=c(1,4,66,5,5,11,3,1,6,21,54,25,12,17,9,8,6))


roundval <- function (x) 
{
  
  ifelse(round(abs(x - trunc(x)), 1) == 0.5, trunc(x + 0.5), 
         round(x))
}

perc_75 <- function(x) roundval(quantile(x,type = 6,probs = seq(0,1, 0.25),na.rm = TRUE))[4]


tabl1 <- cross_fun(
  dat,
  dat$duration,
  col_vars = dat$cc,
  fun = combine_functions(
    `75th Perc` = perc_75,
    `Valid N` = valid_n
  )
)

tabl2 <- cross_fun(
  dat,
  dat$duration2,
  col_vars = dat$cc,
  fun = combine_functions(
    `75th Perc` = perc_75,
    `Valid N` = valid_n
  )
)

下面是我收到的错误

[.data.table中的错误(RAW_DATA,,FUN(.SD),BY=BY_STRING): 组%2的结果列%1的类型为‘INTEGER’,但应为类型‘Double’.每组的列类型必须一致.

推荐答案

您可以更改roundval,使其返回整数值:

roundval <- function (x) 
{
    
    ifelse(round(abs(x - trunc(x)), 1) == 0.5, as.integer(trunc(x + 0.5)), 
           as.integer(round(x)))
}

R相关问答推荐

棒棒糖图表大小和线宽参数故障标签未出现

按自定义数字模式对变量名称排序

使用Shiny组合和显示复制和粘贴的数据

在ggplot Likert条中添加水平线

使用ggplot将平滑线添加到条形图

使用对管道内单元格的引用生成新变量

使用R的序列覆盖

整数成随机顺序与约束R?

如何在区分不同条件的同时可视化跨时间的连续变量?

提取具有连续零值的行,如果它们前面有R中的有效值

如何使用列表中多个列表中的第一条记录创建数据框

通过在colname中查找其相应值来创建列

哪一行和行和 Select 特定行,但是考虑到Nas

在多页PDF中以特定布局排列的绘图列表不起作用

根据另一列中的值和条件查找新列的值

如何从向量构造一系列双边公式

如何使用字符串从重复的模式中提取多个数字?

如何提取R中其他字符串和数字之间的字符串?

在不带max()的data.table中按组查找最后一个元素

如何在一个GGPLATE中绘制多个灰度平滑?