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

ggplot2中用dplyr的filter筛选COD_REG=13绘图报错的解决方法

报错原因排查与解决办法

核心问题

报错Input ..1 must be of size 106 or 1, not size 107本质是ggplot填充映射的数据维度与地理图层要素数量不匹配:用于填充的wage数据行数,和筛选后的地理区域要素数不一致,导致图层渲染冲突。

可能的原因

  1. 关联后数据行数膨胀:prov2022地理数据集本身有107条记录,database只有106条,用right_join会保留prov2022的所有行,生成107条数据(其中1条无匹配的wage值)。后续筛选COD_REG == 13时,填充数据与地理要素的维度无法对应。
  2. 筛选时机错误:先对prov2022筛选区域,再和database做right_join,此时筛选后的地理要素数与database的106条记录不匹配,引发维度冲突。
  3. 关联键重复:database或prov2022中存在重复的关联键(如COD_REG),导致right_join后出现重复行,数据行数从106变为107,后续筛选时维度不兼容。

解决办法

1. 调整操作顺序:先筛选地理区域,再关联数据

先缩小地理数据范围,再和业务数据关联,确保关联后的数据行数与地理要素数完全匹配:

# 第一步:筛选目标地理区域
filtered_prov <- prov2022 %>% filter(COD_REG == 13)

# 第二步:关联业务数据(替换by参数为实际的关联键,比如COD_REG)
joined_data <- right_join(filtered_prov, database, by = "COD_REG")

# 绘图
ggplot(joined_data) +
  geom_sf(aes(fill = ifelse(wage > 500 & wage <= 1000, "purple", NA))) +
  scale_fill_identity()

2. 清理关联键,避免重复匹配

先检查并清理关联键的重复值,确保关联后数据行数正常:

# 检查database中关联键的重复情况
database %>% count(COD_REG) %>% filter(n > 1)
# 检查prov2022中关联键的重复情况
prov2022 %>% count(COD_REG) %>% filter(n > 1)

# 清理database重复数据:保留每个COD_REG的第一条记录
database_clean <- database %>% distinct(COD_REG, .keep_all = TRUE)
# 或者对wage做聚合(比如取均值)
# database_clean <- database %>% group_by(COD_REG) %>% summarise(wage = mean(wage))

# 关联并筛选后绘图
joined_data <- right_join(prov2022, database_clean, by = "COD_REG") %>% filter(COD_REG == 13)

ggplot(joined_data) +
  geom_sf(aes(fill = ifelse(wage > 500 & wage <= 1000, "purple", NA))) +
  scale_fill_identity()

3. 确保填充数据与地理维度匹配

如果必须先关联再筛选,检查数据行数是否一致,并处理缺失值:

joined_data <- right_join(prov2022, database, by = "COD_REG") %>% filter(COD_REG == 13)

# 验证数据行数是否匹配
cat("筛选后地理要素数:", nrow(prov2022 %>% filter(COD_REG == 13)), "\n")
cat("关联后数据行数:", nrow(joined_data), "\n")

# 绘图时处理缺失的wage值
ggplot(joined_data) +
  geom_sf(aes(fill = ifelse(!is.na(wage) & wage > 500 & wage <= 1000, "purple", NA))) +
  scale_fill_identity()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:46:04