Я пытаюсь установить подкадр данных двумя переменными ('site' и 'year') и применить функцию (dismo :: biovars) к каждому подмножеству. Биовары требуют ежемесячных входных данных (12 значений) и выводят 19 переменных в год. Я хотел бы сохранить выходы для каждого подмножества и объединить их.
Пример данных:
data1<-data.frame(Meteostation=c(rep("OBERHOF",12),rep("SOELL",12)),
Year=c(rep(1:12),rep(1:12)),
tasmin=runif(24, min=-20, max=5),
tasmax=runif(24, min=-1, max=30),
pr=runif(24, min=0, max=300))
Полный набор данных содержит 900 станций и 200 лет.
IВ настоящее время я пытаюсь использовать вложенный цикл, который, как я понял, не самый эффективный, и который я пытаюсь сделать работу - код ниже:
sitesList <- as.character(unique(data1$Meteostation))
#yearsList<- unique(data1$Year)
bvList<-list()
for (i in c(1:length(unique(sitesList)))) {
site<-filter(data1, Meteostation==sitesList[i])
yearsList[i]<-unique(site$Year)
for (j in c(1:length(yearsList))){
timestep<-filter(site,Year==yearsList[j])
tmin<-timestep$tasmin
tmax<-timestep$tasmax
pr<-timestep$pr
bv<-biovars(pr,tmin,tmax)
bvList[[j]]<- bv
}}
bv_all <- do.call(rbind, bvList)
Я знаю, что есть гораздо лучшие способыПойти об этом, и я искал варианты применения и dplyr решений, но я изо всех сил пытаюсь разобраться с этим. Любой совет высоко ценится.