首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:lattice.qq如何进行treatment[x]与控件的多面板绘图?

R:lattice.qq如何进行treatment[x]与控件的多面板绘图?
EN

Stack Overflow用户
提问于 2010-06-26 02:29:17
回答 1查看 911关注 0票数 2

我有一个数据帧,看起来像这样:

代码语言:javascript
复制
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.

我可以像这样做Treatment1和Control的单个绘图:

代码语言:javascript
复制
qq(groupname~totdist|fCycle, data=Data, 
 subset=(groupname=='Control'|groupname=='Treatment1'))

它看起来是这样的:

我想自动绘制类似的Treatment2 vs Control ...TreatmentX vs Control的图。这是一个循环的地方,还是晶格有更好的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-26 17:02:43

要在单个面板上执行此操作,需要进行一些重新安排。首先,我将生成一个与您的结构相同的样本数据集

代码语言:javascript
复制
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",依此类推)

代码语言:javascript
复制
Data$groupname2 <- factor(gsub('[1-9]','',as.character(Data$groupname)))

然后重新排列数据集,以便为每个处理组提供控制数据的副本

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

最后,我们可以制作所需的图形。

代码语言:javascript
复制
qq(groupname2~totdist|fCycle*treat, data=Data2)

如果您希望每个处理都有单独的图,那么循环会更好

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3120468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档