2013-08-21 42 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)