user1627466
user1627466

Reputation: 423

R : Can't select xts values between two dates

library(PerformanceAnalytics)

to get the edhec data set

edhec['2000-12-31::2001-12-31',1] 

is what I'm trying to obtain.

So far I have tried :

date_begin_test <- as.Date("2000-12-31")
date_end_test <- as.Date("2001-12-31")

I have tried as.POSIXct as well as plain strings

edhec[date_begin_test::date_end_test,1]
edhec[date_begin_test/date_end_test,1]
edhec[paste("'",date_begin_test,'::',date_end_test,"'",sep=''),1]
edhec[noquote(paste("'",date_begin_test,'::',date_end_test,"'",sep='')),1]

The last one is the most puzzling. It gives me every value from the beginning and stops at date_end_test.

Upvotes: 2

Views: 1092

Answers (3)

Stereo
Stereo

Reputation: 1193

A slightly different approach with lubridate

require(lubridate)
edhec[index(edhec) %within% (ymd("2000-12-31") %--% ymd("2001-12-31")), 1]

Upvotes: 0

Robert
Robert

Reputation: 5152

Or use this:

x.subset=seq.Date(date_begin_test+1,date_end_test+1,by="month")-1
edhec[as.character(x.subset),1]

Upvotes: 0

jeremycg
jeremycg

Reputation: 24945

You were close, this works:

edhec[paste(date_begin_test, '::', date_end_test, sep = ""), 1]

Personally, I would use:

edhec[paste(date_begin_test, date_end_test, sep="::"), 1]

Upvotes: 2

Related Questions