【问题标题】:An efficient way to calculate the mean lap time for each year计算每年平均单圈时间的有效方法
【发布时间】:2021-12-26 23:03:12
【问题描述】:

我正在使用 here 找到的名为“AUSTRALIAN GRAND PRIX”的数据集。

它有这种形式

Year   driverId   position    time    lap    seconds

每年都有位置*圈观测值。 “位置”数字不是恒定的,因为它会根据当年车队的数量而有所不同,如果赛车在比赛期间不得不退赛,那么它可能会随着圈数而变化,因为它会停止记录新的圈数。 “时间”变量可以完全忽略。

我想计算从 1996 年到 2019 年每一年的平均单圈时间,以便绘制和分析这些年来单圈时间如何改善/变化(相关性等)

我知道如何完全手动完成,但这显然非常乏味且不是很优雅。有没有一种很好的方法可以在不创建这样的新数据集的情况下做到这一点

Lap_data <- read.csv()

newdat <- Lap_data[Lap_data$year == 1996,]
mean(newdat$seconds)
> [1] 99.02105

我的最终目标是能够plot(x,y)cor(x,y) 等在哪里

x = [1996, 1997, 1998, ..., 2019]
y = [99.02105, ,mean lap time 1997, ... ,mean lap time 2019]

对不起,如果问题提出/解释不当,我不确定如何显示数据集的外观,因为它除了链接到它之外还有 20k 观察。

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    dplyr 包将在这里为您提供帮助。读入数据后,我们将group_by 年和summarize 的“秒”变量转化为年均值:

    library(dplyr)
    
    # This is the actual url for the csv file:
    url <- paste0("https://10d9b011-755b-4b59-9f64-dbfb2ae95d87.filesusr.com/",
                          "ugd/0c24ab_a29a977ec1404b69bf7cc34fcc58b073.csv?",
                          "dn=Aus%20GP%20Lap%20Data.csv")
    
    df <- read.csv(url) %>%
            group_by(Year) %>% 
            summarize(lap_mean = mean(seconds))
    

    所以现在我们的数据看起来像这样:

    df
    #> # A tibble: 24 x 2
    #>     Year lap_mean
    #>    <int>    <dbl>
    #>  1  1996     99.0
    #>  2  1997     96.3
    #>  3  1998     97.9
    #>  4  1999    102. 
    #>  5  2000     99.8
    #>  6  2001    105. 
    #>  7  2002    107. 
    #>  8  2003    100. 
    #>  9  2004     90.8
    #> 10  2005     90.3
    #> # ... with 14 more rows
    

    我们可以做简单的统计:

    cor(df$Year, df$lap_mean)
    #> [1] -0.1696682
    

    或者创建一个简单的情节:

    plot(df$Year, df$lap_mean)
    

    或者甚至很容易地创建一个更复杂的情节:

    library(ggplot2)
    
    ggplot(df, aes(Year, lap_mean)) +
      geom_smooth() +
      theme_bw()
    #> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
    

    reprex package (v2.0.0) 于 2021 年 11 月 15 日创建

    【讨论】:

    • 非常感谢!这对我很有帮助。
    • 既然您现在已经使用过这个数据集,您有什么技巧可以计算出从杆位赢得比赛的相对频率的好方法吗?这是第 1 圈和第 58 圈位置 1 的 driverId 相同的出现次数。
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多