根据平均值对R数据帧中的列重新排序

根据平均值对R数据帧中的列重新排序,r,average,R,Average,我想根据每列的算术平均值对数据帧的列重新排序 用于: 预期产出为: S3 S2 S1 1 1 1 1 1 2 1 3 3 在上述情况下,平均值为:S1=2,S2=1.6666和S3=1,在数据帧中反转S1和S3列的位置 此外,我的真实数据也有NA的值。使用order()函数 示例性数据帧: df <- data.frame(s1=runif(5), s2=runif(5), s3=runif(5)) df[1,2] <- NA # some NAs df ##

我想根据每列的算术平均值对数据帧的列重新排序

用于:

预期产出为:

S3 S2 S1
1  1  1 
1  1  2 
1  3  3 
在上述情况下,平均值为:
S1=2
S2=1.6666
S3=1
,在数据帧中反转S1和S3列的位置

此外,我的真实数据也有NA的值。

使用
order()
函数

示例性数据帧:

df <- data.frame(s1=runif(5), s2=runif(5), s3=runif(5))
df[1,2] <- NA # some NAs
df
##           s1        s2         s3
## 1 0.74473576        NA 0.71547379
## 2 0.66997782 0.6474405 0.62320795
## 3 0.05361586 0.5370381 0.03298139
## 4 0.06209263 0.9409920 0.46096984
## 5 0.42432948 0.9983042 0.38503196
s1
排在第一,
s2
排在最后,
s3
应成为第二列)

现在,您可以对列重新排序:

(df <- df[,order(mns)])
##           s1         s3        s2
## 1 0.74473576 0.71547379        NA
## 2 0.66997782 0.62320795 0.6474405
## 3 0.05361586 0.03298139 0.5370381
## 4 0.06209263 0.46096984 0.9409920
## 5 0.42432948 0.38503196 0.9983042

(df感谢您的回答。我在这里搜索了我的数据帧,以便根据平均值进行排序。我希望它像列一样,首先是最大平均值,然后是较小值,依此类推。我认为在上面,它首先是最小平均值。您的建议将很有帮助
(mns <- colMeans(df, na.rm=TRUE))
##        s1        s2        s3 
## 0.3909503 0.7809437 0.4435330 
order(mns)
## [1] 1 3 2
(df <- df[,order(mns)])
##           s1         s3        s2
## 1 0.74473576 0.71547379        NA
## 2 0.66997782 0.62320795 0.6474405
## 3 0.05361586 0.03298139 0.5370381
## 4 0.06209263 0.46096984 0.9409920
## 5 0.42432948 0.38503196 0.9983042