2013-08-21 68 views
0

我需要幫助轉化:變換R的數據幀 - 將運行以下中的R</strong><strong>數據幀中位數

----------------------------------- 
| ID | x_1 | x_2 | ... | x_m | 
|---------------------------------| 
| id_1 | x_11 | x_12 | ... | x_1m | 
|---------------------------------| 
|    ...    | 
|---------------------------------| 
| id_n | x_n1 | x_n2 | ... | x_nm | 
----------------------------------- 

我有一個id列和米測量(X_1 - x_m)從n個實驗獲得。對於每個實驗/行,我想使用運行中位數來平滑m個測量值。

有沒有一種簡單的方法可以在R中進行這樣的轉換?

回答

3
library(zoo) 
apply(dfrm[-1], 1, rollmedian, k=5) 

OR:

cbind(dfrm[1], as.dataframe(apply(dfrm[-1], 1, rollmedian, k=5))) 
+0

此解決方案。但它不保留數據幀。輸出是一個矩陣。我正在尋找一種只更新數值而不改變數據幀的解決方案。 – cel

+0

「保留數據框」?您可能正在使用不適合學習R的計算模型。作爲一般規則,R不會修改適當的對象。您始終可以將函數的輸出分配給現有的名稱。我覺得這有點危險,寧願給新的對象自己的名字。 –

+0

對不起,如果我的答案是混亂。我正在尋找你發佈的第二個解決方案。謝謝! 但是,您從apply函數獲得的矩陣必須進行調換。 – cel

2

類似@迪文的答案,但使用統計?runmed

apply(dfrm[-1], 1, runmed, k=5)