Les valeurs agrégées de 15 minutes pour les valeurs de l'horaire étapes
J'ai un bloc de données qui ressemble à ceci:
Timedate TotalSolar_MW
20 2013-06-01 04:45:00 13.0
21 2013-06-01 05:00:00 41.7
22 2013-06-01 05:15:00 81.8
23 2013-06-01 05:30:00 153.0
24 2013-06-01 05:45:00 270.7
25 2013-06-01 06:00:00 429.3
26 2013-06-01 06:15:00 535.4
"Heuredate" est POSIXlt
, et "Total_Solar" est numeric
. Les pas de temps sont dans les intervalles de 15 minutes à partir de juin 1, 0:00 au 24 juin, 24:00.
Maintenant, je veux aggregate
le trimestre en données horaires horaires étapes par exemple 2013-06-01 06:00:00 934.8 MW (81.8 MW + 153.0 MW + 270.7 MW + 429.3 MW; à partir de 05:15-06:00)
J'ai essayé cela avec:
Sum <-aggregate(Total_Solar_Gesamt$TotalSolar_MW,
list(as.POSIXlt(Total_Solar_Gesamt$Timedate)$hour), FUN=sum)
Mais il renvoie à l'ensemble des données horaires de l'ensemble des données de trame et me donne de nouvelles données.cadre avec 24 lignes et un résumé de la MW pour chaque heure.
Comment puis-je changer la structure, seulement de réduire d'un quart horaire à un intervalle horaire? J'ai essayé avec une boucle for mais cela n'a pas fonctionné. Aussi subset
ne fonctionne pas pour moi.
Merci pour l'aide!
- veuillez vous assurer de fournir reproductible exemple pour vos questions.
- outre le manque Reproductible exemple , le général de conseiller, d'éviter l'utilisation de POSIXlt, c'est un **liste**/non numérique, difficile à utiliser pour le regroupement.
- Désolé! Je suis assez nouveau ici et j'ai oublié les reproductible exemple
Vous devez vous connecter pour publier un commentaire.
Lorsque vous travaillez avec le temps de la série, je vous suggère de travailler avec
xts
paquet pour cette, et par exemplehourly.apply
:Plus général, vous pouvez utiliser
period.apply
qui est (lapply
équivalent) , par exemple pour regrouper vos données à chaque 2 heures, vous pouvez effectuer les opérations suivantes:Utilisation
cut.POSIXt
de diviser les dates dans des intervalles d'une heure:Remarque que ci-dessus sera groupe 06:00:00 avec les autres 06 fois. Si vous souhaitez les regrouper en haut de l'heure, de l'heure précédente, juste soustraire une seconde de chaque horodatage:
Et, si vous voulez signaler vos dates d'une heure, comme dans votre question:
À l'aide de la xts:
Remarque comment avec xts, les horodatages des
Sum.xts
sont le dernier horodatage de chaque heure. xts le rend facile à aligner tout de même: