J'ai des données du type {date (sur l'axe des abscisses), valeurs (axe des ordonnées)}:
1 2 3 4 5 6 7 8
| 1;2011-08-29 00:00:00;46;
2;2011-08-29 00:01:00;23;
3;2011-08-29 00:02:00;21;
4;2011-09-01 00:01:00;20;
5;2011-09-01 00:02:00;29;
6;2011-09-01 00:03:00;36;
7;2011-09-02 00:01:00;42;
8;2011-10-01 00:06:00;49; |
Ces données sont stockées dans un vecteur de "character".
1 2 3
| dftest2 <- read.csv("~/R/test3.csv", sep=";")
df_dates = dftest2[2]
v_all_dates = as.matrix(df_dates)[,] |
Puis je convertis dans un format POSIXlt:
l_all_dates_lt = as.POSIXlt(v_all_dates)
J'aimerais selectionner un intervalle. Par exemple: récupérer les données du mois de septembre (2011-09-xx)
J'ai fait une boucle while() et j'ai parcouru la liste l_all_dates_lt jusqu'à ce que j'ai le dernier élement (dernière date du mois de septembre) afin de récupérer les indices correspondant à la première date (from_index) et la dernière date (to_index) du mois de septembre.
Une fois que j'obtiens les indices, je crée une nouvelle liste contenant l'intervalle voulu:
user_dates_lt = l_all_dates_lt[from_index:to_index]
ma question:
N'y a-t-il pas un moyen de remplir une structure de données ( une liste L par exemple ) au fur et à mesure qu'on parcourt la liste de départ l_all_dates_lt. J'aimerais par la suite plot-er sur l'axe des abscisses le résultat. j'ai envie de faire:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| l_user_date = as.POSIXlt("2011-09-01 23:59:00")
i = 1
L = list()
while(l_all_dates_lt[i]<=l_user_date){
if((l_user_date$year == l_all_dates_lt[i]$year) &&
(l_user_date$mon == l_all_dates_lt[i]$mon) && (l_user_date$mday == l_all_dates_lt[i]$mday)){
#L = c(l, list(l_all_dates_lt[i])) #1
#L = c(L, l_all_dates_lt[i]) #2
cpt = cpt + 1;
if(cpt == 1){
from_ind = i
}
}
i = i + 1
} |
J'ai testé le remplissage d'une liste à la volée comme indiquée sur la ligne 7 (#1). J'obtiens à peu près ce que je voulais mais je ne sais pas comment le ploter car pour acceder aux eléments de L il faut faire L[[k]]... j'ai envie de faire quelque chose du type :
plot(L, ...) mais ca ne marche pas.
Puis j'ai essayé d'une autre manière, ligne 8 (#2) et c'est encore pire car je n'obtiens pas une liste de date mais une liste d'année, mois, jour ...
Partager