Измените уровни и метки, используя функцию «as_factor» R для вывода таблицы 1

#r #r-factor #r-haven

Вопрос:

Я пытаюсь создать таблицу описательной статистики, используя таблицу 1 с p-значениями и данными из файла SAV. Я прочитал в файле, используя read_sav из haven пакета.

 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))
 

который считывает данные как a tibble . Чтобы создать таблицу 1, treatment переменная должна быть типом фактора. Обычно я бы изменил столбец, используя ссылку выше, например

 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. Если я использую as_factor функцию from haven , я не смогу передавать уровни или метки.

Я ожидаю вывода, подобного таблице, показанной в ссылке table1 выше.

Как я могу изменить уровни и метки, используя as_factor для включения столбца p-значений? Или есть способ использовать factor его без возврата NULL в столбец?

Ответ №1:

Преобразуйте фрейм 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 возвращает.