0

在 R 中,我尝试使用 tableone::CreateTableOne 来计算数据帧上的 smd(标准化平均差)。我使用了本教程(https://cran.r-project.org/web/packages/tableone/vignettes/smd.html) - 代码运行并很好地生成了所需的输出表,包括 smd。

但是,如果我使用自己的数据,例如下面的测试数据,我会得到表格但没有 smd。可能我犯了一些愚蠢的错误,但是在尝试了很多事情之后(只有数字,更小或更大的数据集,分类变量作为因子(如 r 帮助)或字符(如教程)......)我不知道为什么我不要得到 smd。

# package tableone for CreateTableOne
if (!require("tableone"))  install.packages("tableone");  library("tableone") 
# producible test data
set.seed(1234)
d <- data.frame(age = rnorm(n = 200, mean = 50, 9),
                hair = as.factor(sample(x = c("brown", "black", "blond"), 200, replace = T)),
                group = sample(x = c("sick", "healthy"), 200, replace = T))
str(d)
# calculate and print the table
tabUnmatched <- tableone::CreateTableOne(vars = c("age", "hair"), strata = "group", data = d, test = FALSE, smd = TRUE)
print(tabUnmatched)

结果如下表,没有 smd(并且没有错误消息):

                 Stratified by group
                  healthy       sick         
  n                  90           110        
  age (mean (SD)) 49.18 (7.97)  49.72 (10.10)
  hair (%)                                   
     black           30 (33.3)     35 (31.8) 
     blond           33 (36.7)     43 (39.1) 
     brown           27 (30.0)     32 (29.1) 

我做错了什么,我需要做什么才能获得 smd 输出?

4

1 回答 1

1

呃……这个?

print(tabUnmatched, smd = TRUE)

                Stratified by group
                  healthy       sick          SMD   
  n                  90           110               
  age (mean (SD)) 49.18 (7.97)  49.72 (10.10)  0.059
  hair (%)                                     0.050
     black           30 (33.3)     35 (31.8)        
     blond           33 (36.7)     43 (39.1)        
     brown           27 (30.0)     32 (29.1)  
于 2020-09-27T16:32:30.473 回答