2017-06-06 1 views
-3

Ich habe tägliche Daten mit meiner Matrix, in 6 Spalten unterteilt - "Jahre, Monate, Tage, Abstürze, Anomalien, fehlt".Durchschnitt von Monaten mit Tagesdaten

enter image description here

Ich möchte in jedem Jahr den Durchschnitt jeden Monat des SST berechnen. (Zum Beispiel - 1981 - September - Durchschnittswerte M aller Tage im September), und ich möchte das gleiche für alle Jahre machen. Ich versuche zu arbeiten, mein Code, aber ich bin dazu nicht in der Lage.

+7

Bitte keine Screenshots verwenden, wenn Sie leichter könnte den Text in Frage Ausschneiden und Einfügen. – Spacedman

Antwort

0

Sie sollten dplyr Paket in R. Dazu verwenden, werden wir Ihre Daten df

require(dplyr) 

df.mnths <- df %>% 
      group_by(Years, months) %>% 
      summarise(Mean.SST = mean(SSTs)) 

df.years <- df %>% 
      group_by(Years) %>% 
      summarise(Mean.SST = mean(SSTs)) 

Dies ist zwei neue Datensätze aufrufen, die die mean(SST) für jeden Monat eines jeden Jahres in df.mnths haben wird, und ein anderer Datensatz, der mean(SST) für alle Jahre in df.years haben wird.

+0

Betrachten Sie die Änderung: 'SST-> SSTs' – amonk

+0

Beendete die Anfrage. Ich hoffe, das ist konsequenter. – akash87

0

In Bezug auf die data.table können Sie die folgende Aktion

library(data.table) 
dt[, average_sst := mean(SSTs), by = .(years,months)] 

Hinzufügen einer zusätzlichen Spalte average_sst auszuführen.

0

nur annehmen, dass Ihre Daten in einer „Daten“ genannt data.frame gespeichert ist:

years months  SSTs 
1 1981  1 -0.46939368 
2 1981  1 0.03226932 
3 1981  1 -1.60266798 
4 1981  1 -1.53095676 
5 1981  1 1.71177023 
6 1981  1 -0.61309846 

tapply(data$SSTs, list(data$years, data$months), mean) 
tapply(data$SSTs, factor(data$years), mean)