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

R中使用is.na()清缺失值后空白站点仍居骑行量前6如何解决?

问题排查与修复方案

第一步:修正缺失值校验的目标列

你当前校验缺失值时查询的是end_station_name列,但统计骑行量时分组使用的是start_station_name列,二者不是同一字段,首先校验起始站名称列的缺失情况:

sum(is.na(total_trips_v2$start_station_name))

如果返回结果大于0,说明起始站列本身就存在你之前没清理到的NA值。

第二步:排查非NA类的空白值

站点名称显示为空不代表一定是NA,还可能是空字符串、全空格、不可见控制字符这类情况,执行以下代码排查:

# 排查空字符串数量
sum(total_trips_v2$start_station_name == "", na.rm = TRUE)
# 排查全空白字符(包含空格、制表符、换行符等)数量
sum(nchar(trimws(total_trips_v2$start_station_name)) == 0, na.rm = TRUE)

第三步:修正统计代码的逻辑错误

你当前的分组代码存在逻辑问题:group_by(member_casual="casual", start_station_name)的写法会直接将整个数据集的member_casual列全部赋值为casual再分组,而非筛选出 casual 用户统计。正确的统计代码应该先筛选再分组:

top_5_start_stations <- total_trips_v2 %>%
  # 先筛选 casual 用户,不要在group_by中做赋值操作
  filter(member_casual == "casual") %>%
  group_by(start_station_name) %>%
  summarize(number_of_rides = n(), .groups = "drop") %>%
  arrange(desc(number_of_rides)) %>%
  head(6)

第四步:修复空白站点问题

排查出空白站点记录后,可以选择两种处理方式:

  • 直接过滤无效记录:
total_trips_v2_clean <- total_trips_v2 %>%
  filter(
    !is.na(start_station_name),
    nchar(trimws(start_station_name)) > 0
  )
  • 统一标记为未知站点保留:
total_trips_v2 <- total_trips_v2 %>%
  mutate(
    start_station_name = case_when(
      is.na(start_station_name) | nchar(trimws(start_station_name)) == 0 ~ "未知站点",
      TRUE ~ start_station_name
    )
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:06:02