簡體   English   中英

表示數據幀中的行值,不包括R中的最小值和最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM