我得到了下面的数据框df(此处显示了片段):
我想要做的是在去除两个异常值后计算每行的平均值。对于整个行,我使用了plyr:
我很抱歉,如果这违反了问题发布规则,但是对于平均值、中位数等分开提问是不直观的。
这会断开列值之间的连接。
H2475 H2481 H2669 H2843 H2872 H2873 H2881 H2909
E1 94.470 26.481 15.120 18.490 16.189 11.422 14.886 0.512
E2 1.016 0.363 0.509 1.190 1.855 0.958 0.771 0.815
E3 9.671 0.637 0.571 0.447 0.116 0.452 0.403 0.003
E4 3.448 2.826 2.183 2.607 4.288 2.526 2.820 3.523
E5 2.548 1.916 1.126 1.553 1.089 1.228 0.887 1.065
我想要做的是在去除两个异常值后计算每行的平均值。对于整个行,我使用了plyr:
library(plyr)
df.my_means <- adply(df, 1, transform, my_means = mean(as.matrix(df[i,]) ) )
创建一些临时的数据框/矩阵,将最小值和最大值替换为NAs也可以,但作为初学者我无法做到。
非常感谢您的帮助
编辑1
显然我不知道mean有一个修剪选项。 我想要的解决方案是,我可以插入任何其他函数而不是mean。 也就是说:
library(plyr)
library(e1071)
df.my_means <- adply(df, 1, transform, my_skew = skewness(as.matrix(df[i,]), , 3 ) )
我很抱歉,如果这违反了问题发布规则,但是对于平均值、中位数等分开提问是不直观的。
编辑2没有使用plyr的部分解决方案:
df.my_means <- apply(df ,1, function(x){y=x[order(x)]; (y[2:(length(y)-1)])})
这会断开列值之间的连接。