У меня есть набор данных, который выглядит так,
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)
Я понял, что этот цикл может быть неуместным, но я все еще учусь. Я могу сделать коробочную диаграмму для каждого человека за раз, но мне нужен более быстрый и эффективный способ выбора данных для каждого человека и создания или сохранения результатов ящичной диаграммы. Это будет очень полезно, когда у меня будет много людей (вместо того, чтобы делать это по одному...). Заранее большое спасибо.