I have the following xts objetct "temp"> str(temp)An ?xts? object from 2010-12-26 to 2011-03-05 containing: Data: num [1:70, 1] 2.95 0.852 -0.139 1.347 2.485 ... - attr(*, "dimnames")=List of 2 ..$ : NULL ..$ : chr "t_n" Indexed by objects of class: [POSIXct,POSIXt] TZ: GMT xts Attributes: NULL> tempt_n 2010-12-26 2.9500000 2010-12-27 0.8520833 2010-12-28 -0.1390625 ........... I would like to associate another column with the day of week in the form of 1=Mon, 2=Tue, ..., 7=Sun in order to obtain:>newtempt_n dow 2010-12-26 2.9500000 7 2010-12-27 0.8520833 1 2010-12-28 -0.1390625 2 .............. How could make this in the shortest (and elegant?) way? Ciao from Rome Vittorio
Francisco Gochez
2011-Mar-07 13:05 UTC
[R] Associating the day of week to a daily xts object
Victor,
The "weekdays" function will return the days of the week (as a
character
vector of names) that a given vector of dates (Date or POSIXct) fall on.
These can then be converted into numbers using a look-up table/vector. See
below for an example using the sample_matrix data included with the xts
package.
##
require(xts)
data(sample_matrix)
dates <- as.POSIXct(rownames(sample_matrix), format = "%Y-%m-%d")
dayLookup <- 1:7
names(dayLookup) <- c("Mon", "Tue", "Wed",
"Thu", "Fri", "Sat", "Sun")
datesDays <- dayLookup[weekdays(dates, abbreviate = TRUE)]
print(datesDays)
##
>From here, you can just add the "datesDays" vector as an
additional column
to the original data, e.g.
xts(cbind(sample_matrix, dow =datesDays), order.by = dates).
HTH,
Francisco
On Mon, Mar 7, 2011 at 9:05 AM, Victor <vdemart@gmail.com> wrote:
> I have the following xts objetct "temp"
>
> > str(temp)
> An ‘xts’ object from 2010-12-26 to 2011-03-05 containing:
> Data: num [1:70, 1] 2.95 0.852 -0.139 1.347 2.485 ...
> - attr(*, "dimnames")=List of 2
> ..$ : NULL
> ..$ : chr "t_n"
> Indexed by objects of class: [POSIXct,POSIXt] TZ: GMT
> xts Attributes:
> NULL
>
>
> > temp
> t_n
> 2010-12-26 2.9500000
> 2010-12-27 0.8520833
> 2010-12-28 -0.1390625
> ...........
>
> I would like to associate another column with the day of week in the form
> of 1=Mon, 2=Tue, ..., 7=Sun
> in order to obtain:
>
> >newtemp
>
> t_n dow
> 2010-12-26 2.9500000 7
> 2010-12-27 0.8520833 1
> 2010-12-28 -0.1390625 2
> ..............
>
> How could make this in the shortest (and elegant?) way?
>
> Ciao from Rome
> Vittorio
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
[[alternative HTML version deleted]]