setwd("J:/Documents/Arbete/Fortlöpande miljöanalys/Fenologi/Skoglig fenologi vid SLU") library(dplyr) xpre<-91:320 ypre<-rep(0,230) minxpre<-min(xpre) maxxpre<-max(xpre) xtspre<-seq(0,2000,by=5) ytspre<-rep(0,401) PEP.table<-data.frame(koder=0,doy=0,year=0,station=0,species=0)[FALSE, ] Interpol.table<-data.frame(doy=0,Flowers=0,Unripe=0,Ripe=0,Total=0,FlowersProc=0,UnripeProc=0,RipeProc=0,TotProc=0,FLowersTotProc=0,UnripeTotProc=0,RipeTotProc=0,Year=0,Station=0,Species=0)[FALSE, ] Interpol.tsum<-data.frame(Station=0,Species=0,Year=0,Tempsum=0,Flowers=0,Unripe=0,Ripe=0,Total=0,FlowersProc=0,UnripeProc=0,RipeProc=0,TotProc=0,FLowersTotProc=0,UnripeTotProc=0,RipeTotProc=0)[FALSE, ] berrydata0<- read.csv("berry_data.csv", header=TRUE, sep=",", dec=".") tempsum<- read.csv("Tempsum.csv", header=TRUE, sep=",", dec = ".") berrydata<-arrange(berrydata0,Species,Station,Year,doy) specieslist<-unique(berrydata$Species) plot.new() par(mfrow = c(2,1)) for (l in 1:length(specieslist)) { testspecies<-subset(berrydata,berrydata$Species==specieslist[l]) stationlist<-unique(testspecies$Station) for (k in 1:length(stationlist)) { teststation<-subset(testspecies,testspecies$Station==stationlist[k]) yearlist<-unique(teststation$Year) plot(xpre,ypre, xlab="", ylab = paste("Station ", stationlist[k], ", species " ,specieslist[l]), xlim= c(80,300), ylim = c(0,100), col="white") for (j in 1:length(yearlist)) { testyear<-subset(teststation,teststation$Year==yearlist[j]) flower<-as.data.frame(approx(testyear$doy,testyear$Flowers,xout=xpre,yleft = 0, yright = 0), col.names = c("doy","Flowers")) unripe<-as.data.frame(approx(testyear$doy,testyear$Unripe,xout=xpre,yleft = 0, yright = 0), col.names = c("doy","Unripe")) ripe<-as.data.frame(approx(testyear$doy,testyear$Ripe,xout=xpre,yleft = 0, yright = 0), col.names = c("doy","Ripe")) Interpol.tmp<-merge(flower,unripe,by="doy") Interpol.tmp<-merge(Interpol.tmp,ripe,by="doy") Interpol.tmp$Total<-Interpol.tmp$Flowers+Interpol.tmp$Unripe+Interpol.tmp$Ripe maxflower<-max(Interpol.tmp$Flowers) Interpol.tmp$FlowersProc<-Interpol.tmp$Flowers/maxflower*100 maxunripe<-max(Interpol.tmp$Unripe) Interpol.tmp$UnripeProc<-Interpol.tmp$Unripe/maxunripe*100 maxripe<-max(Interpol.tmp$Ripe) Interpol.tmp$RipeProc<-Interpol.tmp$Ripe/maxripe*100 maxtot<-max(Interpol.tmp$Total) Interpol.tmp$TotProc<-Interpol.tmp$Total/maxtot*100 Interpol.tmp$FlowersTotProc<-Interpol.tmp$Flowers/maxtot*100 Interpol.tmp$UnripeTotProc<-Interpol.tmp$Unripe/maxtot*100 Interpol.tmp$RipeTotProc<-Interpol.tmp$Ripe/maxtot*100 lines(Interpol.tmp$doy,Interpol.tmp$FlowersTotProc, col = 6) lines(Interpol.tmp$doy,Interpol.tmp$UnripeTotProc, col = 3) lines(Interpol.tmp$doy,Interpol.tmp$RipeTotProc, col = 4) Interpol.tmp$Year <-yearlist[j] Interpol.tmp$Station<-stationlist[k] Interpol.tmp$Species<-specieslist[l] Interpol.table<-rbind(Interpol.table,Interpol.tmp) koder<-c(61,65,67,81,89) doy<-c(0,0,0,0,0) for (i in 1:length(xpre)) { if (Interpol.tmp$FlowersProc[i]>=10 & doy[1]==0) doy[1]=Interpol.tmp$doy[i] else doy[1] if (Interpol.tmp$FlowersProc[i]==100 & doy[2]==0) doy[2]=doy[2]=Interpol.tmp$doy[i] else doy[2] if (Interpol.tmp$FlowersProc[i]<=10 & doy[2]>0 & doy[3]==0) doy[3]=Interpol.tmp$doy[i] else doy[3] if (Interpol.tmp$RipeProc[i]>=10 & doy[4]==0) doy[4]=Interpol.tmp$doy[i] else doy[4] if (Interpol.tmp$RipeProc[i]==100 & doy[5]==0) doy[5]=Interpol.tmp$doy[i] else doy[5] } 'points(doy[1],Interpol.tmp$FlowersTotProc[doy[1]-90], col = 6, pch = 1, cex = 0.7)' 'points(doy[2],Interpol.tmp$FlowersTotProc[doy[2]-90], col = 6, pch = 0, cex = 0.5)' 'points(doy[3],Interpol.tmp$FlowersTotProc[doy[3]-90], col = 6, pch = 5, cex = 0.8)' 'points(doy[4],Interpol.tmp$RipeTotProc[doy[4]-90], col = 4, pch = 1, cex = 0.7)' 'points(doy[5],Interpol.tmp$RipeTotProc[doy[5]-90], col = 4, pch = 0, cex = 0.5)' koddoy<-as.data.frame(koder) koddoy<-merge(koddoy,as.data.frame(doy),0) koddoy$Row.names=NULL koddoy$Year <-yearlist[j] koddoy$Station<-stationlist[k] koddoy$Species<-specieslist[l] PEP.table<-rbind(PEP.table,koddoy) tempsumyear<-subset(tempsum,tempsum$Station==stationlist[k] & tempsum$Year==yearlist[j] & tempsum$doy>=minxpre & tempsum$doy<=maxxpre) Interpol.tmp1<-merge(Interpol.tmp, tempsumyear, by = "doy") flower1<-as.data.frame(approx(Interpol.tmp1$Tempsum,Interpol.tmp1$Flowers,xout=xtspre, yleft = 0, yright = 0, ties = mean), col.names = c("Tempsum","Flowers")) unripe1<-as.data.frame(approx(Interpol.tmp1$Tempsum,Interpol.tmp1$Unripe,xout=xtspre, yleft = 0, yright = 0, ties = mean), col.names = c("Tempsum","Unripe")) ripe1<-as.data.frame(approx(Interpol.tmp1$Tempsum,Interpol.tmp1$Ripe,xout=xtspre, yleft = 0, yright = 0, ties = mean), col.names = c("Tempsum","Ripe")) Interpol.tmp2<-merge(flower1,unripe1,by="Tempsum") Interpol.tmp2<-merge(Interpol.tmp2,ripe1,by="Tempsum") Interpol.tmp2$Total<-Interpol.tmp2$Flowers+Interpol.tmp2$Unripe+Interpol.tmp2$Ripe maxflower<-max(Interpol.tmp2$Flowers) Interpol.tmp2$FlowersProc<-Interpol.tmp2$Flowers/maxflower*100 maxunripe<-max(Interpol.tmp2$Unripe) Interpol.tmp2$UnripeProc<-Interpol.tmp2$Unripe/maxunripe*100 maxripe<-max(Interpol.tmp$Ripe) Interpol.tmp2$RipeProc<-Interpol.tmp2$Ripe/maxripe*100 maxtot<-max(Interpol.tmp2$Total) Interpol.tmp2$TotProc<-Interpol.tmp2$Total/maxtot*100 Interpol.tmp2$FlowersTotProc<-Interpol.tmp2$Flowers/maxtot*100 Interpol.tmp2$UnripeTotProc<-Interpol.tmp2$Unripe/maxtot*100 Interpol.tmp2$RipeTotProc<-Interpol.tmp2$Ripe/maxtot*100 Interpol.tmp2$Year <-yearlist[j] Interpol.tmp2$Station<-stationlist[k] Interpol.tmp2$Species<-specieslist[l] Interpol.tmp2<-Interpol.tmp2 %>% relocate(Station,Species,Year) Interpol.tsum<-rbind(Interpol.tsum,Interpol.tmp2) Interpol.table<-rbind(Interpol.table,Interpol.tmp) } } } Intpoltab<-Interpol.table %>% relocate(Species,Station,Year) colnames(Intpoltab)[4]<-"doy" PEPtab<-PEP.table %>% relocate(Station,Species,koder,Year) colnames(PEPtab)[3]<-"phase_id" Intpoltab<-arrange(Intpoltab,Species,Station,Year,doy) PEPtab<-arrange(PEPtab,Species,Station,Year,phase_id) write.csv(Intpoltab, "InterpolBerryData.csv", row.names = FALSE) #write.csv(PEPtab, "PEP-BerryData.csv", row.names = FALSE) write.csv(Interpol.tsum, "InterpolTsumBerryData.csv", row.names = FALSE)