2017-06-06 2 views
-3

J'ai des données quotidiennes avec ma matrice, divisée en 6 colonnes - "Années, mois, jours, ss, anoms, manquant".moyennage par mois avec des données quotidiennes

enter image description here

Je veux calculer la moyenne de chaque mois de SST chaque année. (Par exemple - 1981 - septembre - valeurs moyennes de tous les jours en septembre), et je veux faire la même chose pour toutes les années. J'essaie de travailler, mon code, mais je suis incapable de le faire.

+7

S'il vous plaît ne pas utiliser des captures d'écran lorsque vous pouvez plus facilement couper et coller le texte dans votre question. – Spacedman

Répondre

0

Vous devez utiliser package dplyr dans R. Pour cela, nous appellerons vos données 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)) 

Voici deux nouveaux ensembles de données qui auront le mean(SST) pour chaque mois de chaque année df.mnths, et un autre jeu de données qui aura mean(SST) pour toutes les années dans df.years.

+0

Considérez le changement: 'SST-> SSTs' – amonk

+0

Terminé la demande. J'espère que c'est plus cohérent. – akash87

0

En termes de data.table vous pouvez effectuer les actions suivantes

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

ajouter une colonne supplémentaire average_sst.

0

suppose juste que vos données sont stockées dans un data.frame nommé « données »:

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)