Skip to content

Instantly share code, notes, and snippets.

@meerestier
Created December 16, 2014 13:31
Show Gist options
  • Save meerestier/b1c30ebb76152720a849 to your computer and use it in GitHub Desktop.
Save meerestier/b1c30ebb76152720a849 to your computer and use it in GitHub Desktop.
#################################################################################
#
# Eure Daten
library("FGClimatology")
meteo20 <- read.logger("../Data/Messung_Moerickeluch_Nov2014/CR800_20_Meteo.dat")
meteo40 <- read.logger("../Data/Messung_Moerickeluch_Nov2014/CR800_40_Meteo.dat")
meteo50 <- read.logger("../Data/Messung_Moerickeluch_Nov2014/CR800_50_Meteo.dat")
# Vorprozessierung - falsches Datum
meteo20 <- meteo20[-(1:6),]
meteo40 <- meteo40[-(1:38),]
meteo50 <- meteo50[-c(1,2675:2678),]
# einige Messfuehler sind falsch kalibriert worden (Fehler im Logger behoben)
kalib <- function(x, intercept = 0, slope = 1){ (x-intercept)/slope }
meteo20$ RH_b <- kalib(meteo20$ RH_b, -0.72, 1.047)
meteo40$ RH_b <- kalib(meteo40$ RH_b, -0.62, 1.044)
meteo40$ RH_t <- kalib(meteo40$ RH_t, -0.38, 1.038)
#################################################################################
#
# Vergleich der Stationen untereinander
# Trotz Vorprozessierung haben die Stationen verschiedene Anfangs- und Endzeiten
summary(meteo20)
summary(meteo40)
summary(meteo50)
# Was ist der spaeteste Startzeitpunkt? Was der frueheste Endzeitpunkt?
# Vergleich der unterschiedlichen min() miteinander ...
min_time <- max( c( min(meteo20$ TIMESTAMP), min(meteo40$ TIMESTAMP), min(meteo50$ TIMESTAMP) ) )
max_time <- min( c( max(meteo20$ TIMESTAMP), max(meteo40$ TIMESTAMP), max(meteo50$ TIMESTAMP) ) )
# der TIMESTAMP muss groess?er als min_time und kleiner als max_time sein
# logical-Vektoren!
meteo20_time <- meteo20$ TIMESTAMP >= min_time & meteo20$ TIMESTAMP <= max_time
meteo40_time <- meteo40$ TIMESTAMP >= min_time & meteo40$ TIMESTAMP <= max_time
meteo50_time <- meteo50$ TIMESTAMP >= min_time & meteo50$ TIMESTAMP <= max_time
summary(meteo20_time)
summary(meteo40_time)
summary(meteo50_time)
# anlegen einer neuen Tabelle mit allen Temperatur-Werten (Spalte 3 und 5)
Temp_all <- cbind(meteo20[meteo20_time, c(1,3,5)], meteo40[meteo40_time, c(3,5)],meteo50[meteo50_time, c(3,5)])
str(Temp_all)
# zweiter weg
Temp_all_alt <- cbind(meteo20 $ Temp_t [meteo20_time], meteo20$Temp_t[meteo20_time], meteo40[meteo40_time, c(3,5)],meteo50[meteo50_time, c(3,5)])
boxplot(Temp_all)
common_timestamp <- seq(min_time, max_time, units="minutes", by=60)
# Aufgabe: Erstellen eines boxplots mit allen Temperaturfuehlern am zweiten Tag
# Tipp: Es werden neue logical_variablen fuer die Tage gebraucht
# (auf die Laenge von common_timestamp angepasst)
#################################################################################
RH_all <- cbind(meteo20[meteo20_time, c(4,6)], meteo40[meteo40_time, c(4,6)],meteo50[meteo50_time, c(4,6)])
boxplot(RH_all)
# Temp_all beinhaltet TIMESTAMP und alle Temperaturfühler
Temp_all <- cbind(meteo20[meteo20_time, c(1,3,5)], meteo40[meteo40_time, c(3,5)],meteo50[meteo50_time, c(3,5)])
# Filtern nach day2 TODO: warum geht nicht ==
day2 <- Temp_all$TIMESTAMP >= as.POSIXlt("12.11.2014",format="%d.%m.%Y") & Temp_all$TIMESTAMP < as.POSIXlt("13.11.2014",format="%d.%m.%Y")
summary(day2)
Temp_day2 <- subset (Temp_all, Temp_all$TIMESTAMP >= as.POSIXlt("12.11.2014",format="%d.%m.%Y") & Temp_all$TIMESTAMP < as.POSIXlt("13.11.2014",format="%d.%m.%Y"))
# Boxplotten, aber erste Spalte auslassen
boxplot(Temp_day2[,-1], xlab = "Abb. 1: Temperatur an Stationen, T & B", ylab = "Temperatur in °C", xaxt="n")
# Beschriftung
axis(at=1:6,side=1,c("20 T","20 B","40 T","40 B","50 T","50 B"))
# Aufgabe: Erstellen eines Zeitreihenplots mit den Top-Temperaturfuehlern
# als Linien nebeneinander in einem plot!
Temp_all_topt <- cbind(meteo20[meteo20_time, c(1,3)], meteo40[meteo40_time, c(3)],meteo50[meteo50_time, c(3)])
# Diagramm vorbereiten
xrange <- c(min_time, max_time)
yrange <- c(min( c( min(meteo20$ Temp_t), min(meteo40$ Temp_t), min(meteo50$ Temp_t) ) ), max( c( max(meteo20$ Temp_t), max(meteo40$ Temp_t), max(meteo50$ Temp_t) ) ))
plot(xrange, yrange, type="n", panel.first = grid(10,10), xaxt="n", yaxt="n", xlab=NA, ylab=NA)
# Achseneinteilung, automatische Beschriftungen
xticks <- seq(round(starttime, units = "hours"), round(endtime, units = "hours"), by=6*60*60)+3600
axis(side = 1, at = xticks, labels = format(xticks, "%H:%M"), tck = -.015)
xticks <- seq(round(starttime, units = "days"), round(endtime, units = "days"), by=24*60*60)
axis(side = 1, at = xticks+12*3600, labels = format(xticks, "%d.%m.%Y"), lwd = 0, line = 1.2)
axis(side = 2, tck = -.015, las = 1)
# AchsenBeschriftungen
mtext(side = 2, "Temperatur in °C", line = 2)
# Abbildungsbeschriftung
mtext(side = 1, "Abb. 2: Top-Temperaturfühler ", line = 4)
# Plot
lines(Temp_all_topt$TIMESTAMP, Temp_all_topt[,2], col="black")
lines(Temp_all_topt$TIMESTAMP, Temp_all_topt[,3], col="gray")
lines(Temp_all_topt$TIMESTAMP, Temp_all_topt[,4], col="blue")
# Legende
legend("bottomright",legend=c("20","40","50"), col=c("black","gray","blue"),lty=1 )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment