R:自动计算秩和

标签 r math sum duplicates rank

给定x <- cbind(c(10,15,20,20,25,30,30,30,35,40,40,40,40,45),rep(c('M','F'),7)) ,我想计算类别 M 和 F 的秩和自动,而不是手动计算。我想不通的是当出现平局时如何调整排名。在这种情况下,#3 和#4 都是 20,因此共享排名值 3.5(而不是 3 和 4)。同样,#6 ~ #8 的排名值为 7,而#10 ~ #13 的排名值为 11.5。如果没有这种调整,总和将是错误的。

#Wrong

sum(which(x[,2]=='F')) # =56

sum(which(x[,2]=='M')) # =49

#Right

sum(1,3.5,5,7,9,11.5,11.5) # =56.5

sum(2,3.5,7,7,11.5,11.5,14) # =48.5

我试过了 table()duplicated() ,但无法弄清楚如何将事物拼凑在一起。有什么想法吗?

编辑:感谢 konvas 的建议 rank() , 除了 bgoldst 的解决方案外,它还有效。

最佳答案

您可以 sum() rank()aggregate() :

x <- data.frame(age=c(10,15,20,20,25,30,30,30,35,40,40,40,40,45),sex=rep(c('M','F'),7));
aggregate(rank(age)~sex, x, sum );
##   sex rank(age)
## 1   F      56.5
## 2   M      48.5

关于R:自动计算秩和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29534780/

相关文章:

r - R 中的等值线图 - TIGER Shapefile 问题

python - 用于超大素数的素数硬盘存储 - 阿特金筛法

iphone - 在直线上画箭头

algorithm - 做一个算法,但我的智商太低了

sql - 在 sqlite 中使用 Case 语句,无法获得我正在寻找的结果

Mysql SUM函数返回返回错误的十进制值

r - 格式化R中的所有小数位

r - 使用 R 搜索和替换

r - 加速坐标转换的循环代码

mysql - 查找不同列数的总和