Я хочу построить ретроспективном тестирование для лог-рангового, что сравнение отдельных групп друг с другом:Формула R: как ограничить вычисления двумя группами, используя формулу?
library(survival)
survdiff(DV ~ IV, data=mydf)
Есть ли способ сделать что-то вроде этого (например, сравнивать группы 2 с группой 7) :
survdiff(DV ~ I(if(as.numeric(IV) == 2) {1} else {if(as.numeric(IV) == 7) {2} else {NA}}), data=mydf)
Я знаю, что я могу отфильтровать не нужные строки из mydf
и Surv
объекта DV
df2vs7<-mydf[as.numeric(mydf$IV)==2 | as.numeric(mydf$IV)==7,]
DV2vs7<-DV[as.numeric(mydf$IV)==2 | as.numeric(mydf$IV)==7,]
Но я думаю, что это очень неэффективно; компьютер должен будет хранить каждый отдельный объект данных для каждой комбинации сравниваемых групп.
Не согласен с «очень неэффективной» частью. – zx8754
@ zx8754 Почему? AFAIK, для этого потребуется примерно (n-1) раз больше, чем требуется исходному mydf. R не может подмножать строки дешево (то есть по ссылке). –