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

R语言通过字符串匹配将细分洋区渔业数据按大洋分组的实现方法

R 海洋渔业数据按大洋聚合解决方案

核心思路

通过字符串匹配提取细分洋区所属的大洋大类,再按大类+年份分组聚合指标,全程使用tidyverse套件实现,代码逻辑清晰可调整。

完整实现代码

1. 加载依赖包

# 没有安装的话先运行 install.packages("tidyverse")
library(tidyverse)

2. 读取并处理数据

# 读取原始数据
stock <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-10-12/fish-stocks-within-sustainable-levels.csv')

# 数据清洗与聚合
ocean_category <- c("Pacific", "Atlantic", "Indian", "Mediterranean")
stock_agg <- stock %>%
  # 重命名列适配使用习惯
  rename(
    ocean_detail = Entity,
    code = Code,
    year = Year,
    bio_sus = `Share of fish stocks that are biologically sustainable`,
    bio_nonsus = `Share of fish stocks that are biologically unsustainable`
  ) %>%
  # 匹配生成大洋大类
  mutate(
    ocean_large = case_when(
      str_detect(ocean_detail, "Pacific") ~ "太平洋",
      str_detect(ocean_detail, "Atlantic") ~ "大西洋",
      str_detect(ocean_detail, "Indian") ~ "印度洋",
      str_detect(ocean_detail, "Mediterranean") ~ "地中海",
      TRUE ~ NA_character_
    )
  ) %>%
  # 过滤不属于目标四大洋的记录
  filter(!is.na(ocean_large)) %>%
  # 按大洋、年份分组聚合指标
  group_by(ocean_large, year) %>%
  summarise(
    # 可根据分析需求替换sum为mean/max等聚合函数
    total_sus = sum(bio_sus, na.rm = T),
    total_nonsus = sum(bio_nonsus, na.rm = T),
    .groups = "drop"
  )

补充说明

  • 如果需要保留英文大洋名称,直接把case_when里的中文值替换为对应的英文即可
  • 聚合规则可灵活调整:如果需要计算全大洋平均可持续占比,把sum替换为mean即可
  • 因为所有细分洋区名称都包含对应大洋关键词,字符串匹配不会出现分类错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:54:01