【发布时间】:2019-01-25 13:08:02
【问题描述】:
我有一个问题,我需要查看两组数据。这些是相同的数据值,只是排序不同。从这些集合中,我需要产生两者中最高的值。由于我倾向于使事情过于复杂,我希望社区可以提供帮助。
正在使用的集合是 mtcars,我已经创建了一种这种称为 MPG 和一个称为 HP。现在我想比较 MPG 和 HP,并生产出哪辆车的 MPG 最高,但也显示出最高的 HP。因此,例如按 MPG 排序,丰田卡罗拉排在第一位。然而在惠普上,它几乎是最后一个,因此不会是答案。我假设我需要创建一个语句,如果在 byMPG 上最高并且在 byHP 上最高,则返回该值,但我知道这会产生错误或 0,因为玛莎拉蒂不等于丰田。提前感谢您在此问题上的帮助。
myCars <- mtcars
byMPG <- myCars[order(-myCars$mpg),]
byHP <- myCars[order(-myCars$hp),]
byMPG
byHP
由于我不熟悉如何格式化,我假设我在学习这一点时过于复杂了。从数据来看,答案应该是 Lotus Europa,因为它在 MPG 上排名第三,并且在 HP 表上排名第一。
【问题讨论】:
-
您提到了错误的答案。但是,正确的答案是什么?
-
@dylanjm 感谢您的回复,我在问题的最后一行提到了我认为正确的答案。
-
我想,我要么遗漏了细节,要么你以错误的方式思考你的问题。在我看来,你最好只在桌子上目视一下。我不知道你会如何把这个算法。你认为 HP 比 mpg 更重要吗?为什么 33/66 比 30/113 差?这似乎有点武断。
-
如果您希望获得汽车模型作为结果,则很难从两者中获得最大值,因为正如您所说,丰田是最高 mpg 但最后 hp。因此,如果没有更多细节,将很难确定两者的最佳选择。
-
按排名,
mtcars[order(rank(mtcars$mpg) + rank(mtcars$hp)), ]尽管使用分位数可能更有意义:mtcars[order(do.call(`+`, lapply(mtcars[c('mpg', 'hp')], function(x) (x - min(x)) / (max(x) - min(x))))), ]
标签: r