R: Lattice.QQ كيف يمكنني القيام بمخطط علاج متعدد الألواح [X] مقابل التحكم؟
سؤال
لديّ ملف بيانات يشبه هذا:
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'))
تبدو هكذا:
أود تلقائيًا إنشاء مخططات مماثلة للمعالجة 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()
لا تنتمي إلى StackOverflow