[英]How to rank cells in a data frame in R WITHOUT adding it to the data frame
我已经看过很多关于如何在帧中添加排名列的帖子,但是没有关于如何使用排名过程中的数据进行变量排序的帖子。 我想,哎呀,为什么不从变换data.frame函数中取出排名函数并使用它:
transform(df,
year.rank = ave(count, year,
FUN = function(x) rank(-x, ties.method = "first")))
Buuuut试图计算一年内的事件,因此对我来说并不适用。 我只想从数据框中的单元格中获取信息并对它们进行排名。 我正在尝试进行Kruskal-Wallis测试,但使用排列来找到p值( kruskal.test()
不会这样做)。
我试图在我的数据框架上使用rank()
,但我明白了:
Week2_NoAnti Week2_NaN3 Week2_TCS Week2_EDTA <NA> <NA>
1 4 6 10 11 12
<NA> <NA> <NA> <NA> <NA> <NA>
2 3 7 5 8 9
这不是很有帮助的。 数据框如下所示:
Week2_NoAnti Week2_NaN3 Week2_TCS Week2_EDTA
1 0.0000 0.7665 0.0756 0.1060
2 0.0938 0.9222 0.0806 0.1289
3 0.1243 1.0109 0.1283 0.1882
如前所述,我想对细胞进行排名。 我还需要稍后知道它们来自哪个列,这样我就可以平均每列得到的等级,所以我不能将它们全部放入向量中并对向量进行排名。
谢谢您的帮助!
编辑:实现一个更好的方法来做数据框可能是一列有值,另一列有标签。 目前难以使head()函数显示超过六个结果......,但这里显示的是:
Groups agValues
1 Week2_NoAnti 0.0000
2 Week2_NoAnti 0.0938
3 Week2_NoAnti 0.1243
4 Week2_NaN3 0.7665
5 Week2_NaN3 0.9222
6 Week2_NaN3 1.0109
解:
抱歉浪费你的时间! 上述组织使其变得更加容易:
ranks = rank(agValues)
mean(ranks[Groups=="Week2_NoAnti"])
尝试
rankmat=matrix(rank(as.vector(yourmatrix)),dim(yourmatrix))
在这里,您将矩阵转换为向量,然后获取等级并将向量转换回正确维度的矩阵。
对于刚刚发布的已编辑数据框,请执行此操作
ranked.df <-df[order(df$agValues),] #decreasing = FALSE by default
#and df is your data.frame
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.