Per ogni data, ottenere la settimana dell'anno a cui appartiene la formattazione tramite format()
utilizzando i segnaposti formato %U
di %W
. %U
considera domenica come il primo giorno della settimana, mentre %W
considera il lunedì il primo giorno della settimana. Ecco un esempio:
now <- as.Date(Sys.time())
dates <- seq(now, now + 25, by = "1 day")
dat <- data.frame(Dates = dates, Week = format(dates, format = "%W"))
head(dat, 10)
che dà:
> head(dat, 10)
Dates Week
1 2011-11-06 44
2 2011-11-07 45
3 2011-11-08 45
4 2011-11-09 45
5 2011-11-10 45
6 2011-11-11 45
7 2011-11-12 45
8 2011-11-13 45
9 2011-11-14 46
10 2011-11-15 46
Anche se non è chiaro dalla tua domanda esattamente ciò che si vuole fare, un modo per abbinare questo vettore di date (o meglio, il mio telaio dati dat
sopra) è via merge()
. Dire che abbiamo un vettore di settimane che vogliamo abbinare contro e alcuni dati associati nel frame di dati weekdat
:
weekdat <- data.frame(Week = 44:50, Price = c(10, 20, 25, 30, 20, 15, 10))
Poi possiamo collegare dat
con weekdat
utilizzando merge()
come così:
> merge(dat, weekdat)
Week Dates Price
1 44 2011-11-06 10
2 45 2011-11-07 20
3 45 2011-11-08 20
4 45 2011-11-09 20
5 45 2011-11-10 20
6 45 2011-11-11 20
7 45 2011-11-12 20
8 45 2011-11-13 20
9 46 2011-11-14 25
10 46 2011-11-15 25
11 46 2011-11-16 25
12 46 2011-11-17 25
13 46 2011-11-18 25
14 46 2011-11-19 25
15 46 2011-11-20 25
16 47 2011-11-21 30
17 47 2011-11-22 30
18 47 2011-11-23 30
19 47 2011-11-24 30
20 47 2011-11-25 30
21 47 2011-11-26 30
22 47 2011-11-27 30
23 48 2011-11-28 20
24 48 2011-11-29 20
25 48 2011-11-30 20
26 48 2011-12-01 20
ci sono altri modi di associare o collegare date a settimane, ma quanto sopra dovrebbe darti qualcosa su cui lavorare.
dare un'occhiata al pacchetto 'lubridate' che rende molto semplice la gestione delle date. per esempio 'settimana (x)' restituirebbe il numero della settimana della data x. – Ramnath
-1 Re la modifica - così come possiamo sapere che cosa tu sia l'indice della settimana personale è se non lo faccio io) parlaci prima, e ii) ** mostra ** i tuoi dati o uno snippet di esso? –
@ GavinSimpson- hai ragione. Avrei dovuto essere più chiaro. – JohnRos