我有一组这样的数据,
物种<-“ABC”ind<-rep(1:4,each=24)小时<-rep<-rep(seq(0,23,by=1),4)深度<-runif(长度(Ind),1,50)df<-data.framework(cbind(物种,ind,小时,深度))df$深度<-as.数值(df$埋深)
在这个例子中,列"ind“有更多的级别,并且它们的长度并不总是相同的(这里每个个体都有4个级别,但实际上有些人有数千行数据,而其他的只有几行)。
我想要做的是有一个外部循环或函数,它将从每个个体("ind")中选择所有行,并使用深度/小时列生成一个盒子图。
这就是我心中的想法,
(i in 1:length(df$ind)){ data<-df[df$ind==df$indi,]个人化<-data plot.box<-function<-function(Data){box图(深度~小时,dat=data,xlab="Hour of day",ylab=“深度(m)") }}mfrow=c(2,2),mar=c(5,4,3,1)plot.boxplot(个人)
我意识到这个循环可能是不合适的,但我仍然在学习。我可以一次为每个人绘制盒图,但是我想要一种更快、更有效的方法来为每个个体选择数据,并创建或存储盒图结果。这将是非常有用的,当我有更多的个人(而不是一次一个.)。提前谢谢。
发布于 2012-12-12 01:37:46
像这样的东西怎么样?
par(mfrow=c(2,2))
invisible(
by(df,df$ind,
function(x)
boxplot(depth~hour,data=x,xlab="Hour of day",ylab="Depth (m)")
)
)为了提供一些解释,这将为df定义的by df$ind中的每一组案例运行一个by。invisible包装器只是使用于boxplot的输出不被写入控制台。
https://stackoverflow.com/questions/13831240
复制相似问题