我有一组看起来像这样的数据,
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)
我意识到这个循环可能不合适,但我仍在学习。我可以一次为每个人绘制箱线图,但我想要一种更快、更有效的方式来为每个人选择数据并创建或存储箱线图结果。当我有更多人时(而不是一次做一个......),这将非常有用。提前非常感谢。