2013-03-11 93 views
1

我有一個xts對象。我想爲每行取平均值並將其合併回我的對象​​。例如:適用於R中的xts對象

require(xts) 
obj = xts(matrix(1:100, ncol=2), order.by=seq.Date(from=as.Date("2012-01-01"), by=1, length=50)) 
another_obj = apply(obj, 1, mean) 

這現在只是一個以日期作爲名稱的向量。

class(another_obj) 
    [1] "numeric" 

我可以再次將它轉換爲xts和使用的名稱爲order.by然後合併一切恢復OBJ但這是相當繁瑣。

another_obj = as.xts(another_obj, order.by=as.Date(names(another_obj))) 
obj = merge(obj, another_obj) 

這樣做的正確方法是什麼?

回答

4

這將增加一列,每行的平均

obj <- cbind(obj, rowMeans(obj)) 

編輯澄清爲什麼cbind正在這裏:

這裏我使用cbind.xts至極是呼叫merge.xts。所以上面相當於:

obj <- merge(obj, rowMeans(obj)) 
+0

謝謝!總是有點擔心,只是「混合」時間序列在一起,但我想在這種情況下,它保證他們會排隊。 – Alex 2013-03-11 19:54:01

+0

@Alex查看我的更新。 – agstudy 2013-03-11 20:00:54

+0

你能解釋這是如何工作的嗎? 'rowMeans'將返回一個不是'xts'的向量,那麼在這裏如何調用合併? – Alex 2013-03-11 20:05:32

2

你的意思是這樣的嗎?

obj <- as.xts(transform(obj, another_obj=rowMeans(obj))) 
+1

這改變了obj類到'動物園' – 2013-03-11 19:45:54

+0

@geektrader感謝您的評論,我編輯,使類保持'xts' – 2013-03-11 19:47:53

+0

謝謝!將變換首先變成一個'data.frame'? – Alex 2013-03-11 19:53:29