使用 `as_factor` R 避风港函数为 table1 输出更改级别和标签

问题描述

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

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

df<- read_sav(filename)

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

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

library(MatchIt)
data(lalonde)

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

但是,当我这样做时

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

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

我希望输出类似于上面 table1 链接显示的表格。

如何使用 as_factor 更改级别和标签以包含 p 值列?或者有没有办法使用 factor 而不将 NULL 返回到列?

解决方法

tibble 数据框转换为普通数据框,然后您可以使用 factor 和 p 值脚本生成表 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]。每种方法返回不同的结构,factor 使用 test_df$treatment 返回的结构。