В codeе есть цикл, в котором он агрегирует климатические переменные с метеостанции в "дневные выборки". Я не писал этот code и мне нужна помощь, чтобы запустить его. Изображение файла климатических переменных .csv
Мне нужна помощь, чтобы выяснить, почему цикл возвращает пустые значения, и я с радостью поделюсь климатическими данными, если кто-то сможет мне помочь!
Цикл возвращает пустые объекты, и я думаю, что он должен возвращать агрегацию наблюдений за день. Мне нужна помощь в отладке.
rm(list=ls(all=TRUE)) # clear memory/variables/etc.
library(zoo) ## load libary for zoo objects (time series) (install package first!)
library(chron) ## library for cron objects (time related)
library(xts)## for indexhour
library(gdata) ##for nobs function
library(Evapotranspiration)
library(readxl)
data("climatedata")
head(data)
sum_2<-function (x) ## define new variable "sum_2" and define "funtion of x" (see content inside {...} for conditions)
{
if(all(is.na(x))==TRUE) return(NA)
(sum(x,na.rm=TRUE)/2)
}
x<-c(0,1)
x<-rep(NA,10)
sum_2(x)
## returns NA values if missing or weird value
#setwd( dirname(filepath) )
setwd("XX") ## set work path !!UPDATE!!
data <- read.csv("Reki_short.csv",sep=",",stringsAsFactors=F)
head(data)
str(data)
data2<-data
strip2 <- strptime(data2[, 1], "%d/%m/%Y %H:%M", tz = "GMT")
#####
#print(head(data2[, 1])) # Check the first few entries in the date-time column
#print(nchar(data2[, 1])) # Check the length of each string
#print(unique(nchar(data2[, 1]))) # See if there's variability in string lengths
#data2[, 1] <- trimws(data2[, 1]) # Remove leading and trailing whitespace
#data2[, 1] <- gsub("\\s+", " ", data2[, 1]) # Replace multiple spaces with a single space
dim(data2)
strip2<-strptime(data2[,1], "%d/%m/%Y %H:%M", tz="GMT") ## strip date/time > convert using POSIXct
strip2
data2[,1]<-as.chron(as.POSIXct(strip2, tz="GMT")) ## rewrite as chron object
head(data2)
data2.zoo<-zoo(data2[,-1],data2[,1]) # create a zoo object with the sap flux data (data2.zoo)
summary(data2.zoo)
str(data2)
#aggregate to hourly data
data2.zoo<-aggregate(data2.zoo, trunc(time(data2.zoo), "1:00:00"), mean, na.rm=TRUE) ## aggregate 10 min to 30 min values and rewrite in "out"
head(data2.zoo)
data2.zoo
#correct for sums in precipitation!
data2.zoo$Precipitation1_mm<-data2.zoo$Precipitation1_mm*6
data2.zoo$Precipitation2_mm<-data2.zoo$Precipitation2_mm*6
head(data2.zoo)
FFF<-data2.zoo
dim(FFF)
dim(data2.zoo)
run<-dim(FFF)[2]
run
for(i in 1:run){
## gibt anzahl der observations pro tag aus (nobs)
day_samples<-aggregate(FFF[,i],trunc(time(FFF[,i]), units = "day"),nobs)
## get rid of any which do not have 25 samples (von 6 bis 18Uhr)
(day_samples <- day_samples[day_samples > 23])
print(day_samples)
## get day index of the remaining days
#(day <- as.Date(index(day_samples)))
## filter data by remaining days und automatisch in out2 bis out7 schreiben
#assign(paste("out", i, sep = ""),(FFF[,i][dates(index(FFF[,i])) %in% (day)]))
}
Якуб
Вопрос задан30 августа 2024 г.