【问题标题】:How to calculate and create an index to represent the values of other columns? [closed]如何计算和创建一个索引来表示其他列的值? [关闭]
【发布时间】:2018-10-23 15:35:17
【问题描述】:

请,谁能帮我实现下面列出的计算。

我在 RStudio 中使用 R。

df <- data.frame(x = c(1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16,17,18,19,20),
             total_fatal_injuries = c(1,0,5,4,0,27,10,15,6,2,10,4,0,0,1,0,3,0,1,0),
             total_serious_injuries = c(10,0,9,3,2,4,9,9,0,8,3,1,0,8,2,7,5,4,0,2),
             total_minor_injuries = c(10,0,9,3,2,4,9,9,0,8,3,1,0,8,2,7,5,4,0,3),
             total_uninjuried = c(1,0,1,0,0,10,2,5,0,4,0,0,31,0,2,3,0,1,0,0),
             injured_index = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))

在上面的数据集中,每条线代表对车辆事故发生的观察。

“x”列只是一个 ID。

同一事件可能有不同程度的伤害:致命伤害、重伤、轻伤和未受伤。每列值的总和等于该事件涉及的个体数。

目标是根据其他列中记录的值,用一个表示事件严重程度的值填充“injured_index”列。

表示事件严重程度的数字索引,可以对数据集进行排序。

计算“injured_index”列的最佳公式是什么?

我希望有人就如何计算代表事件严重程度的指数值提出建议。基于每个级别、每次事件的受害者总数。

重要性很容易理解。

1) 致命是不好的
2) 严肃一点不那么糟糕
3)未成年人不好
4) 未受伤是理想的。

如何以数学方式将所有内容放在一起,并获得一个指数来表示哪个事件比另一个事件更严重或更不严重?

我知道如何创建列并分配值。 我只想知道如何计算将要存储的值。

我知道这更多地与数学有关,但数学堆栈交换中的数学家拒绝回答,因为他们认为它没有数学而是编程。 :/

感谢大家的尝试!

【问题讨论】:

  • 不清楚预期的输出。请使用dput 显示一个小示例而不是图像以及预期的输出
  • 嗨阿克伦!我改进了示例。
  • @AnderOak 欢迎来到 SO。如果您的问题被否决但请改进您的问题,请不要感到沮丧,例如比“下面的情况”更好的标题,不要要求“最佳方式”而是具体问题(“最佳”是相对的,取决于您的先决条件),并且始终提供输入数据、预期输出和您拥有的 R 代码,但没有按预期工作。 THX :-)
  • @RYoda,非常感谢您的指导。下次我会注意做得更好。 :)

标签: r calculus


【解决方案1】:

这是一种方法。

# This counts how many people in each row, for columns 2 through 5
df$count <- rowSums(df[,2:5])

# This assigns a weighting to each severity of injury and divides by how
#   many people in that row. Adjust the weights based on your judgment.
df$injured_index = (1000 * df$total_fatal_injuries + 200 * 
  df$total_serious_injuries + 20 * df$total_minor_injuries) / df$count

【讨论】:

  • 乔恩,您的方法与我尝试的方法非常相似。我只是使用较小的重量。也许这就是为什么我得到的结果看起来不正确的原因。感谢您的时间和关注!
猜你喜欢
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 2012-07-09
  • 2021-03-20
  • 2012-07-12
  • 2022-11-18
相关资源
最近更新 更多