首页 > 解决方案 > 如何通过取 mtcars 数据集中的均值和 hp 的平均值在数据聚合的基础上为行名创建 r 排名?

问题描述

我想要数字列的平均值mpghp. mpg在此数据框中,每个制造商的排名必须根据和为每个制造商单独计算。制造商的hp最终度量值为0.6 * mpg + 0.4 * hp。请看下面的代码:

data(mtcars)
t<-mtcars
d<-aggregate(mpg~hp,data = t,FUN = mean)
d

通过这样做,我们得到一个列表。但此列表不包含制造商的名称。我们如何才能获得制造商的排名?.

标签: rranking

解决方案


请看下面,据说行名的第一个单词会给出制造商的名称:

data(mtcars)

t <- mtcars
t$mfg <- vapply(rownames(mtcars), function(x) unlist(strsplit(x, " "))[1], "")
d <- aggregate(. ~ mfg, data = t, FUN = function(x) mean(x))[, c("mfg", "mpg", "hp")]
d[, 2:3] <- lapply(d[, 2:3], rank) 
d$final <- rank(0.6 * d$mpg + 0.4 *d$hp)
head(d)

输出,最终指标在final列中:

       mfg  mpg   hp final
1      AMC  7.0 12.5   4.0
2 Cadillac  1.5 16.0   1.0
3   Camaro  3.0 19.5   5.0
4 Chrysler  5.0 18.0   7.0
5   Datsun 17.0  5.0  10.5
6    Dodge  8.0 12.5   6.0

推荐阅读