You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中创建ride_length列及全量数据可视化问题求助

解决步骤:恢复全量数据、计算骑行时长与可视化

一、找回全量的corrected_rides数据

你误将原数据覆盖为3行tibble,必须先恢复原始数据:

  • 若数据来自本地文件(如CSV、XLSX),重新执行读取命令:
    # 示例:读取CSV文件,替换为你的实际文件路径
    corrected_rides <- read.csv("corrected_rides.csv")
    # 或用readr包的read_csv(更快处理大文件)
    # library(readr)
    # corrected_rides <- read_csv("corrected_rides.csv")
    
  • 若数据是通过代码生成的,重新运行生成该DataFrame的完整代码段,确保得到5674730行的原始数据。
  • 若无备份或生成代码,需从原始数据源重新获取数据。

二、正确计算ride_length列

首先确保started_at和ended_at为时间类型,否则无法正确计算差值:

1. 检查并转换时间列类型

# 查看列类型
str(corrected_rides$started_at)
str(corrected_rides$ended_at)

# 若不是时间类型,用lubridate包转换(新手友好)
install.packages("lubridate")  # 首次使用需安装
library(lubridate)
corrected_rides$started_at <- ymd_hms(corrected_rides$started_at)
corrected_rides$ended_at <- ymd_hms(corrected_rides$ended_at)

# 或用基础R转换(需匹配时间格式,示例为YYYY-MM-DD HH:MM:SS)
# corrected_rides$started_at <- as.POSIXct(corrected_rides$started_at, format = "%Y-%m-%d %H:%M:%S")
# corrected_rides$ended_at <- as.POSIXct(corrected_rides$ended_at, format = "%Y-%m-%d %H:%M:%S")

2. 计算骑行时长

直接对时间列做减法,R会自动生成difftime类型结果,也可转换为数值型的分钟/小时:

# 计算时长(默认单位为秒)
corrected_rides$ride_length <- corrected_rides$ended_at - corrected_rides$started_at

# 转换为分钟(更易解读)
corrected_rides$ride_length_min <- as.numeric(corrected_rides$ride_length, units = "mins")

三、全量数据的可视化(用户类型vs骑行时长)

由于数据量达500万+,直接画散点图会严重卡顿且信息重叠,推荐用分布类图表:

1. 箱线图(展示分位数与异常值)

install.packages("ggplot2")
library(ggplot2)

ggplot(corrected_rides, aes(x = member_casual, y = ride_length_min)) +
  geom_boxplot(outlier.size = 0.3) +  # 缩小异常点,避免图表杂乱
  labs(title = "不同用户类型的骑行时长分布",
       x = "用户类型",
       y = "骑行时长(分钟)") +
  theme_bw()

2. 小提琴图(展示密度分布)

ggplot(corrected_rides, aes(x = member_casual, y = ride_length_min)) +
  geom_violin(scale = "width") +
  geom_jitter(alpha = 0.05, size = 0.2) +  # 低透明度散点补充细节
  labs(title = "不同用户类型的骑行时长密度分布",
       x = "用户类型",
       y = "骑行时长(分钟)") +
  theme_bw()

3. 过滤异常值(可选)

若存在极端时长(如超过24小时的无效记录),可先过滤再绘图:

# 保留0到1440分钟(24小时)内的有效记录
filtered_rides <- subset(corrected_rides, ride_length_min > 0 & ride_length_min <= 1440)

# 用过滤后的数据绘图
ggplot(filtered_rides, aes(x = member_casual, y = ride_length_min)) +
  geom_boxplot() +
  labs(title = "过滤异常值后不同用户类型的骑行时长分布",
       x = "用户类型",
       y = "骑行时长(分钟)") +
  theme_bw()

内容的提问来源于stack exchange,提问作者null_void

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:17:26