Seite 1 von 1

Mittelwerte bilden

Verfasst: Di Aug 01, 2017 8:58 am
von jessi
Guten Tag zusammen,

ich habe Daten die wie folgt aufgebaut sind:

Code: Alles auswählen

str(date)
'data.frame': 15892331obs. of 5 variables:
$tag: chr "20130102" "20130102" ...
$phi: num 31 31 31 31 ...
$lam: num 16 17 18 19 ...
$temp: num -3.5 5 -0.2 1.7 ... 
phi läuft von 31 bis 60, ist jetzt allerdings kein Integer. Die zehner-Stelle bleibt immer gleich, bei den kommazahlen ändert sich phi laufen, also 31.06, 31.12 oder 31.08 ...
Jetzt möchte ich allerdings gerne die Temperatur-Werte mitteln und zwar über phi und lam, also dass ich alle T-Werte die bei lam = 16 und phi = 31 gemittelt werden. Dazu hätte ich bereits folgendes probiert:

Code: Alles auswählen

mi_T <- aggregate(temp ~ phi+lam,date, FUN = mean)
Das funktioniert jetzt nicht, da phi nicht immer den gleichen komma-wert hat. Gibt es eine Möglichkeit, den Code so zu verändern, dass für die Mittelwertsberechnung nur die Zahl vor dem Komma (also 31, 32, 33 ...) berücksichtigt wird? die Werte für lam ändern sich nicht in der Nachkommazahl, sondern bleiben konstant.

Meine Daten lese ich folgenderweise ein (falls man ev. da schon anders einlesen kann)

Code: Alles auswählen

date <- dbGetQuery(conn, 'SELECT tag, phi, lam, temp FROM table WHERE tag In ("20130102", "20130103","20130104") AND typeof(temp) = "real" AND phi >= 31 AND phi <= 60 AND lam >= 16 AND lam <=30')
vielen dank.
Jess

Re: Mittelwerte bilden

Verfasst: Di Aug 01, 2017 9:27 am
von jogo

Code: Alles auswählen

mi_T <- aggregate(temp ~ as.integer(phi) + as.integer(lam), data=date, FUN = mean)
Ist die Laufzeit noch erträglich?

Gruß, Jörg

Re: Mittelwerte bilden

Verfasst: Di Aug 01, 2017 1:18 pm
von jessi
Hallo Jörg,

vielen Dank für deine Antwort.
Wenn ich mir die Daten jetzt ausgeben lasse

Code: Alles auswählen

str(mi_T)
'data.frame:' ...
$as.integer(phi):  int 31 31 31 31 ...
$as.integer(lam):  int 16 17 18 19 ...
$temp: num -3.5 5 -0.2 1.7 ... 
Kann ich jetzt auf die einzelnen Spalten noch zugreifen?
Die Kommandozeile, die ich normalerweise benutze

Code: Alles auswählen

mi_T$azimuth 
funktioniert nicht.

Ist die Laufzeit noch erträglich?

Ja, das Einlesen dauert etwas, die Mittelwertsberechung ging dann aber recht schnell.

Danke nochmals.
Jessi

Re: Mittelwerte bilden

Verfasst: Di Aug 01, 2017 1:59 pm
von jogo
Hallo Jessi,

um den Zugriff auf die Spalten von mi_T zu vereinfachen, kannst Du folgendes machen:

Code: Alles auswählen

names(mi_T) <- c("phi", "lam", "temp")
mi_T$phi    ### oder mi_T$lam
Hinter welche Bezeichnung versteckt sich der Azimuth, phi oder lam ?

Gruß, Jörg

Re: Mittelwerte bilden

Verfasst: Di Aug 01, 2017 2:42 pm
von jessi
Hallo Jörg,

vielen Dank nochmals.
Azimuth ist eigentlich phi, hab mit den Namen etwas herum gespielt.

glg. Jessi