2012-08-08 56 views
45

Có những cách rất tiện lợi để đặt trước các đối tượng xts. Ví dụ, người ta có thể nhận được tất cả các dữ liệu cho tất cả các năm, tháng, ngày, nhưng là đúng 09:30-04:00 bằng cách thực hiện:Trả về các khung thời gian tập hợp dữ liệu trong một khung thời gian khác?

my_xts["T09:30/T16:00"] 

Hoặc bạn có thể nhận được tất cả các quan sát giữa hai ngày bằng cách thực hiện:

my_xts["2012-01-01/2012-03-31"] 

hoặc tất cả các ngày trước/sau một ngày nào đó bằng cách thực hiện:

my_xts["/2011"] # from start of data until end of 2011 
my_xts["2011/"] # from 2011 until the end of the data 

làm thế nào tôi có thể nhận được tất cả các dữ liệu cho chỉ số tháng đối với tất cả các năm hay chỉ vài ngày nhất định cho tất cả các tháng và năm ? Có bất kỳ thủ thuật subsetting khác tồn tại?

+2

Bạn đã xem quantmod.com chưa? Cụ thể, các ví dụ http://www.quantmod.com/examples/data/ – GSee

+0

Đây là cách đảo ngược một tập con, sử dụng 'which.i': http://stackoverflow.com/a/32029644/841830 –

+0

Đối với một tập hợp con năm 'dt ['2009',]', lọc năm và tháng 'dt [': 2009-01',]' và sử dụng phạm vi ngày: 'dt ['2009-01-01 :: 2009-02-01' ] '. – marbel

Trả lời

37

Bạn có thể sử dụng họ .index* để nhận các tháng nhất định hoặc các ngày nhất định trong tháng. Xem ?index để có danh sách đầy đủ các chức năng. Ví dụ:

library(quantmod) 
getSymbols("SPY") 
SPY[.indexmon(SPY)==0] # January for all years (note zero-based indexing!) 
SPY[.indexmday(SPY)==1] # The first of every month 
SPY[.indexwday(SPY)==1] # All Mondays 
+0

Rất đẹp. Tôi không bao giờ nhớ những điều đó. – GSee

+12

Tôi cho rằng điều này đặc biệt có ý nghĩa bởi các tác giả gói khi chúng _hide_ các hàm tiện ích này nằm sau dấu chấm. –

15

đặt trước thời gian trong ngày bị ẩn một chút, vì vậy, tôi hiểu tại sao nó sẽ gây ra một câu hỏi như thế này. 'Bí quyết' khác duy nhất mà tôi biết là các hàm lastfirst mà bạn có thể lồng nếu cần. ví dụ. điều này sẽ nhận được 2 ngày cuối cùng trong 3 tuần đầu tiên.

last(first(my_xts, "3 weeks"), "2 days") 
1

Lưu ý rằng có vẻ như có hành vi khác nhau đối với định dạng ngàycủa một định dạng ngày năm cho cửa sổ và ubuntu.

library(quantmod) 
library(xts) 

getSymbols("SPY", src="google", from = "2004-01-01") 
x1 <- SPY['2006-01/2007-12'] 

x2 <- apply.monthly(x1,mean) 
x2['2006-01/2007-12'] 

x3 <- as.xts(coredata(x2),order.by = as.yearmon(index(x2))) 
x3['2006-01/2007-12'] 

Kết quả cho x2 nhất quán giữa các cửa sổ và ubuntu, vì định dạng là ngày đầy đủ. Tuy nhiên, sẽ tạo ra kết quả khác nhau cho các cửa sổ và ubuntu, sau khi chuyển đổi các ngày thành yearmon.

Các vấn đề liên quan