R 中分类矩阵的排序系统

标签 r ranking categorical-data

我有一个数据框,其中的列列出了 child 最喜欢的 5 种动物。我想计算每只动物的频率,并对动物在整个数据集中的平均位置进行排名。

每列中的数据按升序排序(参见下面的数据)(例如 Var 1:Dog 的排名为 1,Roach 的排名为 5)。 Dog 的平均排名为 (1+2+3)/3 = 2,整个数据集中的频率为 3。对于 Cat,平均排名为 (2+1+2)/3 = 1.67,频率为 3。对于 Roach,平均排名为 4,频率为 3。

 Var1 <- c('Dog','Cat','Chicken','Bird','Roach')
 Var2 <- c('Cat','Dog','Roach','Turtle','Bird')
 Var3 <- c('Bird','Cat','Dog','Roach','Zebra')

 animal.data <- data.frame(Var1, Var2, Var3)
 print(animal.data)

我不确定实现此目的最有效的方法是什么。我的完整数据集有 500 多列。谢谢。

最佳答案

基本 R 方法,

animals <- unique(unlist(animal.data))
out <- list()   
for(i in animals) {     
    x <- which(animal.data == i, arr.ind = TRUE)
    avg <- round(mean(x[,1]),2)
    freq <- nrow(x)
    out[[i]] <- data.frame(Mean=avg,Freq=freq)

} 


do.call(rbind,out)

给予,

        Mean Freq
Dog     2.00    3
Cat     1.67    3
Chicken 3.00    1
Bird    3.33    3
Roach   4.00    3
Turtle  4.00    1
Zebra   5.00    1

数据:

 Var1 <- c('Dog','Cat','Chicken','Bird','Roach')
 Var2 <- c('Cat','Dog','Roach','Turtle','Bird')
 Var3 <- c('Bird','Cat','Dog','Roach','Zebra')

 animal.data <- data.frame(Var1, Var2, Var3,stringsAsFactors=FALSE)

关于R 中分类矩阵的排序系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57963069/

相关文章:

python - Pandas 相似度计算中的序数变量处理

r - 升级所有标准包,同时保留非标准包

r - 调整轴位置 ggplot2 面

r - 如何在 R 中用因子值(如 y)做 ggplot barplot?

mysql - 使用 MySQL 查询获取特定行的位置排名

ranking - 投票算法: how to calculate rank?

javascript - 如何在 R 中的同一箱形图上绘制来自一个数据集的 2 组分类数据

r - S4 对象组合不当行为?

mysql - 带领带的简单 MySQL 更新排名

python - Pandas:将单列中的列表转换为多列