Dis que j'ai la matrice suivante:
x1 = 1:288 x2 = matrix(x1,nrow=96,ncol=3)
3 Réponses :
Il y a.
Supposons que nous ayons les jours: p> vous pouvez faire facilement p> si Vous avez un fichier de données avec une variable de date, vous pouvez l'utiliser. Vous pouvez le faire pour toutes les variables à la fois, à l'aide d'agrégat: p> examine les fichiers d'aide de ces fonctions pour commencer. Faites également une recherche ici, il existe de nombreuses autres réponses intéressantes sur ce problème: p> PS: Si vous allez faire beaucoup de temps, vous devriez jeter un coup d'œil à la ZOO Package (sur Cran: http://cran.r-project.org/web/packages/zoo/index.html ) p> p>
@Snowfrog tu as tort. TAPPLY ne crée pas de cadre de données. Cela crée un vecteur (dans ce cas). Grande différence.
Un problème avec la méthode Tapply code> est qu'il crée un vecteur (nombre de colonnes = nombre de jours). La méthode code> code> crée une trame de données (1 colonne avec nombre de lignes = nombre de jours), ce qui peut être plus pratique si une manipulation ultérieure des données est nécessaire.
Pour référence aux autres: Si vous n'avez pas créé d'objet indépendant pendant des jours et que ce n'est qu'une colonne de votre DF, pour que vous n'ayez besoin de spécifier df $ jours
Un moyen assez compact et rapide de faire cela consiste à remodeler le vecteur dans une matrice appropriée et à calculer le moyen de colonne.
colMeans(matrix(x2[,2],nrow=24))
Solution propre, à condition qu'il n'y ait aucune donnée manquante nulle part. Sinon, la matrice ne représenterait pas les jours.
Vous devez faire attention avec cette méthode afin que les dimensions soient correctes. Mais vous pouvez traiter des données manquantes en utilisant NA pour ceux qui utilisent Na.rm = true
Je suis conscient de ça :-) Je veux dire disparaître dans le sens de "Pas chaque jour a 24 rangées de données"
1) TS. strong> Comme il s'agit d'une série de temps régulièrement espacée, convertissez-la en une série TS code>, puis l'agrégez de la fréquence 24 à la fréquence 1:
library(zoo)
day.hour <- seq(1, length = length(x2[, 2]), by = 1/24)
z <- zoo(x2[, 2], day.hour)
aggregate(z, floor, mean)
## 1 2 3 4
## 108.5 132.5 156.5 180.5
+1 pour montrer comment utiliser ZOO et TS pour cela. Je ne l'ai pas mentionné comme je ne voulais pas trop prendre trop sur les données dans le vrai problème, mais elle est définitive et utile.