[英]R: How to to replace(switch) the max and min values in a row in a dataframe when max <= min?
[英]mean from row values in a dataframe excluding min and max values in R
我得到了以下數據框,df,(此處顯示的片段):
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,]) ) )
創建一些臨時數據幀/矩陣也應該可以用最小值和最大值替換為NA,但作為初學者,我無法做到。
非常感謝你的幫助
編輯1
我顯然沒有意識到這意味着有一個修剪選項。 我想有一個解決方案,而不是意味着我可以插入任何其他功能。 即:
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)])})
這打破了列值之間的連接。
您可以使用trim
參數mean
:
apply(x,1,mean,trim=1/NCOL(x))
# E1 E2 E3 E4 E5
# 17.0980000 0.8765000 0.4376667 2.9583333 1.3295000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.