【发布时间】:2012-12-12 01:15:54
【问题描述】:
我有一组看起来像这样的数据,
species<-"ABC" ind<-rep(1:4,each=24) hour<-rep(seq(0,23,by=1),4) depth<-runif(length(ind),1,50) df<-data.frame(cbind(species,ind,hour,depth)) df$depth<-as.numeric(df$depth)
在这个例子中,列“ind”有更多的层级,它们的长度并不总是相同(这里每个人有 4 个层级,但实际上有些人有数千行数据,而其他人只有几行行)。
我想做的是有一个外部循环或函数,它将从每个人(“ind”)中选择所有行并使用深度/小时列生成箱线图。
这是我心中的想法,
for (i in 1:length(unique(df$ind))){ data<-df[df$ind==df$ind[i],] individual[i]<-data plot.boxplot<-function(data){ boxplot(depth~hour,dat=data,xlab="Hour of day",ylab="Depth (m)") } } par(mfrow=c(2,2),mar=c(5,4,3,1)) plot.boxplot(individual)
我意识到这个循环可能不合适,但我仍在学习。我可以一次为每个人绘制箱线图,但我想要一种更快、更有效的方式来为每个人选择数据并创建或存储箱线图结果。当我有更多人(而不是一次做一个......)时,这将非常有用。提前非常感谢。
【问题讨论】:
标签: r function loops match boxplot