Цикл кода r для агрегации наблюдений за день НЕ работает

1
6

В 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 г.

1 Ответ

Ваш ответ

Загрузить файл.