R: Lattice.QQ كيف يمكنني القيام بمخطط علاج متعدد الألواح [X] مقابل التحكم؟

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

  •  30-09-2019
  •  | 
  •  

سؤال

لديّ ملف بيانات يشبه هذا:

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 مقابل التحكم ... TreatmentX 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