Agrégation des Données Quotidiennes pour le Mois/l'Année intervalles
Je n'ai pas souvent de travailler avec des dates dans R, mais j'imagine que c'est assez facile. J'ai une colonne qui représente une date dans un dataframe. Je veux simplement créer un nouveau dataframe qui résume un 2ème colonne par Mois/de l'Année à l'aide de la date. Quelle est la meilleure approche?
Je veux un deuxième dataframe afin que je puisse le donner à un complot.
Toute aide que vous pouvez fournir serait grandement apprécié!
EDIT: Pour référence:
> str(temp)
'data.frame': 215746 obs. of 2 variables:
$ date : POSIXct, format: "2011-02-01" "2011-02-01" "2011-02-01" ...
$ amount: num 1.67 83.55 24.4 21.99 98.88 ...
> head(temp)
date amount
1 2011-02-01 1.670
2 2011-02-01 83.550
3 2011-02-01 24.400
4 2011-02-01 21.990
5 2011-02-03 98.882
6 2011-02-03 24.900
- pourriez-vous nous dire ce que le format de vos dates sont dans? POSIX? personnage?
Vous devez vous connecter pour publier un commentaire.
Il y a probablement une solution plus élégante, mais des fentes dans les mois et les années avec
strftime()
et puisaggregate()
ing devrait le faire. Puis remonter la date pour le traçage.Je le ferais avec
lubridate
etplyr
, l'arrondissement dates au mois près pour les rendre plus faciles à tracer:summarise(df, x = mean(my))
.Un peu en retard pour le jeu, mais une autre option serait d'utiliser
data.table
:cela donne:
Si vous voulez des noms plutôt que des numéros pour les mois, vous pouvez utiliser:
cela donne:
Comme vous le voyez, cela vous donnera les noms de mois dans votre système de la langue (qui est le néerlandais dans mon cas).
Ou à l'aide d'une combinaison de
lubridate
etdplyr
:Utilisé des données:
Suffit d'utiliser la xts paquet pour cette.
où le PLAISIR est une fonction qui vous données agrégées (par exemple somme)
Vous pouvez le faire aussi:
J'ai une fonction
monyr
que j'utilise pour ce genre de trucs:Vous pouvez modifier la
as.Date
à la fin deas.POSIXct
de faire correspondre le format de la date dans vos données. Résumant par mois est simplement une question de l'utilisation globale/par/etc.Aussi, étant donné que le temps de la série semblent être dans la xts format, vous pouvez regrouper vos séries chronologiques quotidiennes de temps mensuel de la série à l'aide de la moyenne de la fonction comme ceci:
La solution:
Pour le terrain que vous pourriez utiliser
barplot
:Voici un
dplyr
option: