【问题标题】:Comparing two data sets returning the biggest on both比较两个数据集返回最大的
【发布时间】: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


【解决方案1】:

为这个问题提供的解决方案如下,我将把它留在这里以备将来使用:

myCars <- mtcars
myCars$efficiency <- scale(myCars$mpg) + scale(myCars$hp)
row.names(myCars)[which.max(myCars$efficiency)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2020-09-30
    • 2015-07-10
    • 2014-08-30
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    相关资源
    最近更新 更多