根据平均值对R数据帧中的列进行重新排序 [英] Reordering columns in an R dataframe according to average values
本文介绍了根据平均值对R数据帧中的列进行重新排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望根据每列的算术平均值对数据框的列进行重新排序。
用于:
S1 S2 S3
1 1 1
2 1 1
3 3 1
预期输出为:
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
计算列平均值,省略:
(mns <- colMeans(df, na.rm=TRUE))
## s1 s2 s3
## 0.3909503 0.7809437 0.4435330
所需的列顺序为:
order(mns)
## [1] 1 3 2
(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
这篇关于根据平均值对R数据帧中的列进行重新排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文