#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
возвращает.