On Fri, 18 Jul 2014 10:15:35 AM Veronica Andreo wrote: > Hi list > > I have a vector, which are remotely sensed chlorophyll values for a certain > pixel in 11 years, then i have a flag or label vector (t_max) that consists > of 0 and 1, which tells me where i have the annual peak (one per year, then > eleven 1 and all the rest are 0). > > I'm interested in extracting the date in which the bloom beggins. For that > matter I'm using a threshold of 5% above the median of the whole series. > > I need to go over the chlorophyll data vector (cla) and every time I find > the yearly maximum value (where t_max == 1), i need to go backwards in cla > as many time steps as needed untill I cross the threshold (5% over the > median of cl)... once i crossed that threshold, i need to be sure that at > least for 2 time steps, the value of cla keeps going down (it's below the > threshold)... once that condition is met, i want to get the first position > where cla is higher than that threshold... > that would be the phytoplankton bloom starting date... > > This is more or less what i was trying, but it does not work and i'm > stuck... can you please help me?? > > cla<- ts of 506 values (every 46 values, i have one year) > t_max<- vector of 0 & 1; 1 where the yearly cla max occurs (11 ones & all > rest 0) > threshold = 0.05*median(cla)+median(cla) > > for ( t in 1:length(t_max) ) { > if ( t_max[t] == 0 ) > { > next; > } else { > if ( (cla[t-1] < threshold) && (cla[t-2)] < threshold) ) > { > return which(cla[t]) > } > } > } > Hi Vero, I think this does what you want, even though it doesn't do it the way you describe above.
cla<-runif(506)+ rep(c(seq(1,3,length.out=23),seq(3,1,length.out=23)),11) obs_time<-paste(rep(1:11,each=46),rep(1:46,11),sep="_") t_max<-rep(0,506) t_begin<-rep("",11) for(year in 1:11) { threshold<-median(cla[(year-1) * 46 + 1:46]) * 1.05 max_pos<-(year-1) * 46 + which.max(cla[(year-1)*46+1:46]) t_max[max_pos]<-1 threshpos<-(year-1) * 46 + 1 while(cla[threshpos] < threshold) threshpos <- threshpos + 1 cat(threshold,cla[threshpos],max_pos,cla[max_pos],"\n") t_begin[year]<-obs_time[threshpos] } Jim ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.