Я хотел бы отобразить результаты двух регрессионных анализов рядом друг с другом, скажем, логистической и регрессии COX. Переменные представлены в строках, а соответствующие данные для p, OR/HR и доверительного интервала — в столбцах. Итак, имена столбцов не совпадают: слева ИЛИ, справа HR.
Я попробовал cbind, но столкнулся со следующими проблемами:
(1) Что делать, если одна переменная (строка) присутствует только в одной таблице из-за выбора переменной? В этом случае при их сочетании в другой таблице должна быть пустая строка.
(2) После того, как обе таблицы объединены, как вы можете добавить заголовок, охватывающий четыре столбца каждой таблицы, чтобы пометить их как логистические или COX?
Результат, который я ищу, должен отображаться в виде латексной таблицы через xtable:
| Logistic regression | COX regression
| p | OR | 2.5% | 97.5% | p | HR | 2.5% | 97.5%
v1 | 0.849 | 0.936 | ... | ... | | | |
v2 | 0.249 | 0.595 | ... | ... | 0.026 | 1.916 | ... | ...
v3 | | | | | 0.023 | 0.140 | ... | ...
Вот пример кода:
library(xtable);library(survival)
# Creating a sample data frame
set.seed(1234)
event <- as.numeric(round(rnorm(10,5,5))>1);tte<-abs(round(rnorm(10,5,5)))
v1 <- round(rnorm(10,5,5));v2 <- round(rnorm(10,2,5));v3 <- round(rnorm(10,1,5))
df<-data.frame(event, tte, v1, v2, v3)
# Some logistic regression ...
LogReg <- glm(event~v1+v2,family=binomial,data=df)
LogRegTable<-round(cbind(summary(LogReg)$coef[, "Pr(>|z|)"], exp(coef(LogReg)), exp(confint(LogReg))),3)
colnames(LogRegTable)<-c("p","OR","2.5%","97.5%")
LogRegTable<-LogRegTable[!rownames(LogRegTable)=="(Intercept)",]
# ... and some COX regression
CoxReg <- coxph(Surv(df$tte, df$event)~v2+v3,data=df)
CoxRegTable<-round(cbind(summary(CoxReg)$coef[, "Pr(>|z|)"], exp(coef(CoxReg)), exp(confint(CoxReg))),3)
colnames(CoxRegTable)<-c("p","HR","2.5%","97.5%")
# There we go
LogRegTable
CoxRegTable
# Now, how to get them in one table?
xtable(
cbind(LogRegTable, CoxRegTable)
)
# ... messes up the correct row names
merge()
будет лучше, чемcbind
. Если вам нужны причудливые таблицы, рассмотрите возможность использования пакета, такого какxtables
илиstargazer
, для создания вывода LaTeX (или напишите код, чтобы сделать LaTeX именно таким, как вы хотите). Здесь просто недостаточно информации, чтобы дать более конкретные рекомендации (рассмотрите возможность добавления примеров данных и кода, который вы пробовали). - person MrFlick   schedule 07.06.2014