Создать отдельные переменные из объекта table1 - PullRequest
1 голос
/ 15 марта 2020

Я использую функцию createTableOne из пакета tableOne. Мне это очень нравится. Для простоты доступа в уценке R я хотел бы развернуть объект списка в отдельных переменных.

Например: если я получу таблицу:

      0   1
Var1 12   15
var2 85   32

Я хотел бы разбить на следующие переменные:

Var1_0 = 12
Var1_1 = 15
Var2_0 = 85
Var1_1 = 32

1 Ответ

1 голос
/ 15 марта 2020

Основываясь на структуре таблицы, мы можем unclass на выходе вернуть list, извлечь компонент 'ContTable', который снова равен list, поэтому мы l oop вместо list с помощью lapply, а затем получить строку, имена столбцов для извлечения отдельных компонентов ('n', 'mean', 'sd'), отформатировать вывод с помощью sprintf для определенных компонентов и вернуть как list. Чтобы сделать имена n_1, n_2, et c. l oop поверх list с Map, задайте имена с помощью paste ing, а затем используйте list2env для создания объектов в глобальной среде (хотя и не рекомендуется)

library(tableone)    
lst1 <- unclass(table2)
lst2 <- lapply(unclass(lst1$ContTable), function(x)
    list(n = x[1, "n"], age = sprintf('%f (%0.2f)', x['age', 'mean'], 
    x['age', 'sd']),  time = sprintf('%f (%0.2f)', x['time', 'mean'], 
            x['time', 'sd'])))

Map(function(x, y) list2env(setNames(x, paste0(names(x), "_", y)),
              .GlobalEnv),  lst2, names(lst2))

- вывод

n_1
#[1] 138
n_2
#[1] 90
age_1
#[1] "63.340580 (9.14)"
age_2
#[1] "61.077778 (8.85)"
time_1
#[1] "283.231884 (213.05)"
time_2
#[1] "338.966667 (203.47)"

данные

vars <- c("age","ph.ecog","time") 
catvars <- c("ph.ecog") 
table2 <- CreateTableOne(vars = vars, factorVars = catvars,
           data = lung, strata = "sex")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...