在 datasummary 中显示唯一值的计数,并使用数据组合两个不同的描述性统计表

Show count of unique values in datasummary and combine two different tables of descriptive statistics using data

我真的很喜欢 modelsummary 包,我正在尝试制作一个混合不同类型的描述性统计数据的 table。第一部分很简单:我可以对 var2var3 进行基本描述。不过,我无法正确理解第二部分。

  1. 我想计算变量 var1 的唯一条目数,即 26。
  2. 我希望能够将两者合二为一table。
var1<-rep(LETTERS, 5)
var2<-rnorm(length(var1), mean=50, sd=10)
var3<-rnorm(length(var1), mean=10, sd=5)
df<-data.frame(var1, var2, var3)
library(gr)
library(modelsummary)

#This gets the descriptives of var2 and var3
datasummary(var2+var3~Mean+SD+N, data=df)
#htis returns a long column of the number of entries of each value of var1; I would just like the number 26 here and combine it with the above
datasummary(var1~length, data=df)

datasummary() 中的混合因子和数字变量有点棘手。这里有两个选项。

第一种方法是用 output="data.frame" 创建第一个 table,并将其提供给第二个 table 的 add_rows 参数,插入“空”根据需要对齐两个 tables:

的列
library(modelsummary)

var1<-rep(LETTERS[1:5], 5)
var2<-rep(LETTERS[8:12], 5)
var3<-rnorm(length(var1), mean=50, sd=10)
var4<-rnorm(length(var1), mean=10, sd=5)
df<-data.frame(var1, var2, var3, var4)

# function to insert empty columns
empty <- function(...) ""

ar <- datasummary(var1 + var2 ~ empty + empty + N,
                  data = df,
                  output = "data.frame")

datasummary(var3 + var4 ~ Heading("") * empty + Mean + SD + N,
            data = df,
            add_rows = ar)
Mean SD N
var3 52.66 9.35 25
var4 9.21 5.25 25
var1 A 5
B 5
C 5
D 5
E 5
var2 H 5
I 5
J 5
K 5
L 5

第二种方法是使用带有 ~1 作为公式参数的 datasummary_balance 模板函数。这当然不太灵活,但它适用于简单的情况:

datasummary_balance(~ 1, data = df)
Mean Std. Dev.
var3 52.7 9.4
var4 9.2 5.2
N Pct.
var1 A 5 20.0
B 5 20.0
C 5 20.0
D 5 20.0
E 5 20.0
var2 H 5 20.0
I 5 20.0
J 5 20.0
K 5 20.0
L 5 20.0

基于add_row (https://vincentarelbundock.github.io/modelsummary/articles/datasummary.html#add_rows)

new_row <- data.frame('var1',
                       "-",
                       "-",
                       length(unique((var1))))

datasummary(var2+var3~Mean+SD+N, data=df, 
            add_rows = new_row)