R: Lattice.qq Как мне сделать многопальный график лечения [x] vs control?

StackOverflow https://stackoverflow.com/questions/3120468

  •  30-09-2019
  •  | 
  •  

Вопрос

У меня есть dataframe, который выглядит так:

str(Data)
'data.frame':   11520 obs. of  29 variables:
 $ groupname  : Factor w/ 8 levels "Control","Treatment1",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ fCycle     : Factor w/ 2 levels "Dark","Light": 2 2 2 2 2 2 2 2 2 2 ...
 $ totdist    : num  0 67.5 89.8 109.1 58.3 ...
 #etc.

Я могу сделать один график лечения1 против контроля, как это:

qq(groupname~totdist|fCycle, data=Data, 
 subset=(groupname=='Control'|groupname=='Treatment1'))

Похоже, это выглядит:

alt text

Я хотел бы автоматически сделать похожие участки лечения2 VS Control ... ReportX VS Control. Это место для цикла или решетка имеет лучший путь?

Это было полезно?

Решение

Для этого на одной панели приходит некоторое перерабатывание. Во-первых, я создам пример данных, установленные с той же структурой, что и ваш

library(lattice)
Data <- data.frame(groupname = factor(rep(c('Control',paste('Treatment',1:7,sep='')),each = 100)),
                   fCycle = factor(rep(rep(c('Dark','Light'),each = 50),8)),
                   totdist = sample(unlist(iris),800,replace = TRUE))

Затем добавьте переменную для различения лечения и контроля (т.е. "Treatment2" перекодирован как "Treatment", так далее.)

Data$groupname2 <- factor(gsub('[1-9]','',as.character(Data$groupname)))

Затем переставьте набор данных, так что каждая группа лечения дана копия данных управления

Data2 <- NULL
for(treat in paste('Treatment',1:7,sep='')){
  Data2 <- rbind(Data2,
                 cbind(rbind(Data[Data$groupname == treat,],Data[Data$groupname == 'Control',]),
                       treat))
}

Наконец мы можем сделать нужный график

qq(groupname2~totdist|fCycle*treat, data=Data2)

Если вы хотите отдельные участки для каждой обработки, то петля будет лучше

pdf('treatVsContQq.pdf')
for(treat in paste('Treatment',1:7,sep='')){
  print(qq(groupname~totdist|fCycle, data=Data,
     subset=(groupname=='Control'|groupname==treat)))
}
dev.off()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top