繁体   English   中英

如何在R中的数据帧中对单元格进行排序而不将其添加到数据帧中

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM