Trova il giorno di una settimana


215

Diciamo che ho una data in R ed è formattata come segue.

   date      
2012-02-01 
2012-02-01
2012-02-02

Esiste un modo in R per aggiungere un'altra colonna con il giorno della settimana associato alla data? Il set di dati è molto grande, quindi non avrebbe senso passare manualmente e apportare le modifiche.

df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02")) 

Quindi, dopo aver aggiunto i giorni, sembrerebbe:

   date       day
2012-02-01   Wednesday
2012-02-01   Wednesday
2012-02-02   Thursday

È possibile? Qualcuno può indicarmi un pacchetto che mi permetterà di farlo? Sto solo cercando di generare automaticamente il giorno entro la data.

Risposte:


298
df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02")) 
df$day <- weekdays(as.Date(df$date))
df
##         date       day
## 1 2012-02-01 Wednesday
## 2 2012-02-01 Wednesday
## 3 2012-02-02  Thursday

Modifica: solo per mostrare un altro modo ...

Il wdaycomponente di un POSIXltoggetto è il giorno della settimana numerico (0-6 a partire da domenica).

as.POSIXlt(df$date)$wday
## [1] 3 3 4

che è possibile utilizzare per impostare un vettore di caratteri dei nomi dei giorni feriali

c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", 
    "Friday", "Saturday")[as.POSIXlt(df$date)$wday + 1]
## [1] "Wednesday" "Wednesday" "Thursday" 

3
+1 C'è un modo per usare weekdaysper ottenere il numero del giorno della settimana come si usa as.POSIXlt??
Shambho

3
@Shambho Credo che si potrebbe fare questo: setNames(0:6, c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))[weekdays(as.Date(df$date))]. Se non ti piacciono i nomi, potresti avvolgerli unname().
GSee,

6
Per ottenere il numero del giorno della settimana (0-6, dom-sab) dalla data che è possibile eseguire: format (as.Date (df $ date), "% w"). Per i dettagli del codice formato vedere stat.berkeley.edu/~s133/dates.html
JStrahl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.