整理F1澳大利亚大奖赛圈速数据集拟合线性模型分析发车位与完赛排名关联
数据预处理与建模实现方案
完整可运行代码
# 加载依赖包 library(dplyr) library(tidyr) # 导入原始数据 url <- paste0("https://10d9b011-755b-4b59-9f64-dbfb2ae95d87.filesusr.com/", "ugd/0c24ab_a29a977ec1404b69bf7cc34fcc58b073.csv?", "dn=Aus%20GP%20Lap%20Data.csv") df <- read.csv(url) # 核心预处理步骤 processed_df <- df %>% # 仅保留第1圈和最终圈(第58圈)的记录 filter(lapNumber %in% c(1, 58)) %>% # 过滤掉位置缺失的无效记录(退赛车手) filter(!is.na(position)) %>% # 长表转宽表,每一行对应一位车手的发车位和完赛位置 pivot_wider( id_cols = driverId, names_from = lapNumber, values_from = position, names_prefix = "position_lap_" ) %>% # 移除未跑完全程的车手记录(缺失第58圈数据) drop_na() # 拟合线性模型 model <- lm(position_lap_58 ~ driverId + position_lap_1, data = processed_df) # 查看模型结果 summary(model) # 计算发车位与完赛排名的相关性 cor_result <- cor(processed_df$position_lap_1, processed_df$position_lap_58) print(cor_result)
关键预处理逻辑说明
- 原始数据集为长表结构,每一行存储的是单个车手在某一圈的行驶数据,因此需要先筛选目标圈数再转为宽表才能生成建模需要的
position_lap_1和position_lap_58变量 - 预处理过程中自动过滤了退赛、未跑完全程的无效车手样本,避免缺失值影响建模和相关性计算结果
- 生成的
processed_df每一行对应一位完赛车手,包含建模需要的所有变量,可以直接代入后续分析
内容的提问来源于stack exchange,提问作者Manbearpig
相关产品推荐
相关产品推荐

