首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定发生次数最多的10公里间隔?

如何确定发生次数最多的10公里间隔?
EN

Stack Overflow用户
提问于 2022-07-28 15:58:12
回答 2查看 36关注 0票数 0

我在高速公路上发生了一系列事故。我需要确定发生事故最多的x公里长。

在我的例子中,虚构的高速公路有100公里长,我想找出“最危险”的10公里长,事故最多的地方。

我想出了以下的..。

代码语言:javascript
复制
library(tidyverse)

df <- tibble(
  id = seq(1, 100,1),
  km = round(runif(100, 0, 100))
)


df %>%
  mutate(
    interval = cut_interval(km, n = 11)
  ) %>%
  count(interval)

问题是这种方法分析固定应力。例如,这种方法不分析从14公里到23公里范围内发生的事故数量。

我怎样才能找到事故最多的10公里范围呢?

我想我可以迭代并创建重叠范围,然后进行计数。不管怎样,有没有更简单或更直接的方法?有任何现有的包可以在这样的间隔内工作吗?

EN

回答 2

Stack Overflow用户

发布于 2022-07-28 16:23:25

试着按公里排列,然后取过去十分钟的滚动总和。你可以很容易地找到最大滚动和之后,并假设最大是前十公里。

代码语言:javascript
复制
library(tidyverse)
library(RcppRoll)


set.seed(11)

tibble(
  id = seq(1, 100,1),
  km = round(runif(100, 0, 100))) %>%
  group_by(km) %>%
  summarise(accidents = sum(id)) %>%
  complete(km = 1:100, fill = list(accidents = 0)) %>%
  arrange(km) %>%
  mutate(rolling_sum = roll_sum(accidents, 10, fill = NA, align = "right")) %>%
  slice(which.max(rolling_sum))

# # A tibble: 1 × 3
#      km accidents rolling_sum
#   <dbl>     <dbl>       <dbl>
# 1    25        41        1189
票数 1
EN

Stack Overflow用户

发布于 2022-07-28 16:32:25

有92段10公里长的公路,从0:9到91:100。使用sapply和一个简单的逻辑测试,很容易获得这10公里长的每一段的事故数量:

代码语言:javascript
复制
mva <- sapply(0:91, function(x) length(which(df$km > x & df$km < (x + 10)))) 

mva
#>  [1] 13 13 11 10 10 11 11 11 13 11 14 13 14 14 11  9  9  8  9  6  6  5  8
#> [24] 10 14 15 16 15 16 16 16 14 12  9  6  6  8  7  8 11 12 14 13 13 12 13
#> [47] 16 16 14 12 10 11 11 11  8  5  5  3  3  3  2  2  2  2  3  2  2  3  3
#> [70]  3  4  5  5  5  5  6  5  5  8  8  9  9  8  8  8  9 10  8  8  6  6  7

要找到最危险的路段,我们可以:

代码语言:javascript
复制
which(mva == max(mva))
#> [1] 27 29 30 31 47 48

我们可以看到,在27-36公里、29-38公里、30-39公里、31-40公里、47-56公里和48-57公里的路段上,每个路段都发生了16起事故。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73155790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档