使用 `as_factor` R haven 函数更改表 1 输出的级别和标签

Change levels and labels using the `as_factor` R haven function for table1 output

我正在尝试使用 table1 和来自 SAV 文件的 p 值和数据来创建描述性统计数据 table。我使用 haven 包中的 read_sav 读入文件。

library(haven)
library(table1)
library(tidyverse)

df<- read_sav(filename)

outcome_var = 'treatment'
test_df <- tibble(treatment = c(1,0,0,0,1,0), x = 1:6, y = rnorm(6))

tibble 形式读入数据。要创建 table1,treatment 变量必须是因子类型。通常,我会使用上面的 link 来更改列,例如

library(MatchIt)
data(lalonde)

lalonde$treat    <- factor(lalonde$treat, levels=c(0, 1, 2), labels=c("Control", "Treatment", "P-value"))

然而,当我这样做时

factor(test_df[,outcome_var], levels=c(0, 1, 2), labels=c("Not Treated", "Treated", "P-value")

treatment 列返回 NULL。如果我使用 haven 中的 as_factor 函数,我无法传递级别或标签。

我希望输出类似于上面 table1 link 中显示的 table。

如何使用 as_factor 更改水平和标签以包含 p 值列?或者有没有一种方法可以使用 factor 而不向列返回 NULL?

tibble 数据框转换为普通数据框,然后您可以使用 factor 和您的 p 值脚本生成您的 Table 1.

test_df <- as.data.frame(test_df)

test_df$treatment <- factor(test_df$treatment, levels=c(0, 1, 2), labels=c("Not Treated", "Treated", "P-value"))

table1(~ x + y | treatment, data = test_df, render = rndr)

请注意,我使用 test_df$treatment 而不是 test_df[, outcome]。每种方法 returns 一个不同的结构,factor 使用 test_df$treatment returns.