2012-01-31 33 views

Trả lời

15

Đây là những gì tôi muốn làm:

library(xts) 
data(sample_matrix) 
sample.xts <- as.xts(sample_matrix, descr='my new xts object') 
x <- sample.xts['2007'] 
x[!weekdays(index(x)) %in% c("Saturday", "Sunday")] 

EDIT: Joshua Ulrich trong ý kiến ​​chỉ ra một giải pháp tốt hơn sử dụng .indexwday(), một trong một gia đình được xây dựng trong chức năng accessor để trích xuất các phần của chỉ mục của xts đối tượng lớp. Ngoài ra, giống như giải pháp Dirk Eddelbuettel của, sau đây nên locale độc ​​lập:

x[.indexwday(x) %in% 1:5] 
+2

tôi thấy về cơ bản các câu trả lời tương tự, nhưng dựa vào các ngày trong tuần số mà làm cho nó độc lập với miền địa phương được sử dụng. –

+9

+1 Lưu ý có hàm '.indexwday', vì vậy dòng cuối cùng của bạn cũng có thể là:' x [.indexwday (x)% trong% 1: 5] '. –

+0

@DirkEddelbuettel Cảm ơn bạn đã chỉ ra điều đó (và +1 chez vous). Tôi sẽ không đánh giá cao sự khác biệt nếu không. –

6

Bằng cách tính toán ngày trong tuần đã cho ngày và theo dõi. Trong ví dụ này, tôi sử dụng loại Date nhưng cách truyền tới POSIXlt hoạt động theo cách tương tự cho POSIXct dấu thời gian trong ngày.

> mydates <- Sys.Date() + 0:6 
> mydates 
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-04" 
+ "2012-02-05" "2012-02-06" 
> we <- sapply(mydates, function(d) { as.POSIXlt(d)$wday}) %in% c(0, 6) 
> we 
[1] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE 
> mydates[ ! we ] 
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-06" 
>  

Đây thực sự không phải là câu hỏi xts nhưng xử lý ngày cơ bản.

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