R:自动计算秩和

R:自动计算秩和,r,math,sum,duplicates,rank,R,Math,Sum,Duplicates,Rank,给定x您可以使用: x带dplyr library(dplyr) x <- cbind(c(10,15,20,20,25,30,30,30,35,40,40,40,40,45),rep(c('M','F'),7)) data.frame(x) %>% mutate(rank=rank(X1)) %>% group_by(X2) %>% summarise(sum(rank)) 库(dplyr) x%变异(秩=秩(X1))%%>%group_by(X2)%%>%总结(和(

给定
x您可以使用:


x带
dplyr

library(dplyr)
x <- cbind(c(10,15,20,20,25,30,30,30,35,40,40,40,40,45),rep(c('M','F'),7))
data.frame(x) %>% mutate(rank=rank(X1)) %>% group_by(X2) %>% summarise(sum(rank))
库(dplyr)
x%变异(秩=秩(X1))%%>%group_by(X2)%%>%总结(和(秩))

Base
R
,您可以使用
ave

setNames(unique(ave(rank(x[,1]), x[,2], FUN=sum)), unique(x[,2]))
#    M    F 
# 48.5 56.5 

不需要
,它不是Matlab。@Pascal,在我使用的几乎所有语言(C/C++/Java/R/bash/SQL/Perl)中,我总是用分号终止语句。我更喜欢它的一致性和明确性。也许,但在R中不需要。在bash中也不需要,我也因此受到指责。有一点无用,R往往是功能性的:导出其他语言特性和习惯,如C是一个坏习惯。你应该适应语言。使用
tapply
会更直接,即
tapply(秩(x[,1])、x[,2],FUN=sum)
而不是
唯一的

setNames(unique(ave(rank(x[,1]), x[,2], FUN=sum)), unique(x[,2]))
#    M    F 
# 48.5 56.5