2012-12-09 37 views
5

Tôi muốn tổng các giá trị trong mỗi cột của một khung theo tuần. Tôi có thể làm điều đó, nhưng số tiền không hoạt động vì một số lý do:Tổng giá trị trong một tuần

> zoo.data <- zoo(data.frame(x=11:20,y=1:10),as.Date(1:10,origin="1970-01-01")) 
> apply.weekly(zoo.data, mean) 
      x y 
1970-01-04 12 2 
1970-01-11 17 7 
> apply.weekly(zoo.data, sum) 
1970-01-04 1970-01-11 
     42  168 

Điều gì đang xảy ra?

Trả lời

8

Đây là kết quả của một thực tế là XTS tác giả đã quyết định thêm một phương pháp mean.xts để bắt chước các hành vi cũ của cơ sở R (và trong đó chủ yếu là colMeans). mean.xts hiện được gửi đi trên các đối tượng xts thay vì mean.defaultapply.weekly tạm thời chuyển đổi đối tượng zoo thành số xts nội bộ.

R> apply.weekly(zoo.data, mean) 
      x y 
1970-01-04 12 2 
1970-01-11 17 7 
R> apply.weekly(zoo.data, mean.default) 
1970-01-04 1970-01-11 
     7   12 

Nhưng, tôi nghĩ rằng đây là những gì bạn muốn làm:

R> apply.weekly(zoo.data, colMeans) 
      x y 
1970-01-04 12 2 
1970-01-11 17 7 
R> apply.weekly(zoo.data, colSums) 
      x y 
1970-01-04 36 6 
1970-01-11 119 49 
+2

+1, nhưng lưu ý đây chỉ là hiện đúng đối với XTS vào R-Forge. 'mean.xts' không được đăng ký trong * xts_0.8-8 * trên CRAN. –

+0

@JoshuaUlrich những gì về 'apply.weekly (zoo.data, var)' hoặc 'apply.weekly (zoo.data, sd)'? Đã tìm kiếm xung quanh lý do tại sao họ không hoạt động như 'mean' – Tunn

+0

@JoshuaUlrich nhận nó https://stackoverflow.com/a/9242189/5823517. Tuyệt vời gói bằng cách này. – Tunn

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