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

如何用R统计特定蜂种观测数并保留零观测年份?

解决方案

你的代码问题在于:先按year和type分组统计后再筛选目标蜂种,那些没有ephippius记录的年份根本不会出现在统计结果里,自然无法保留并填充0。以下是两种可行的解决方式:

方法一:先筛选目标蜂种再补全年份

library(dplyr)
library(tidyr)

# 统计目标蜂种各年份的观测数
qa <- Beedata %>%
  filter(type == "ephippius") %>%
  count(year, name = "observation_count")

# 补全数据集中所有出现过的年份,无观测的年份填充0
qa_full <- qa %>%
  complete(year = unique(Beedata$year), fill = list(observation_count = 0))

如果你的年份是连续的,也可以用full_seq(Beedata$year, 1)替代unique(Beedata$year),生成连续的年份序列。

方法二:按年份分组直接统计

这种方式更直接,分组后直接计算每组内目标蜂种的数量,无观测时自动为0,再补全所有年份:

library(dplyr)
library(tidyr)

qa_full <- Beedata %>%
  group_by(year) %>%
  summarize(observation_count = sum(type == "ephippius")) %>%
  ungroup() %>%
  # 补全所有需要的年份(这里用数据集中的所有年份为例)
  complete(year = unique(Beedata$year), fill = list(observation_count = 0))

说明

  • 如果你的数据中存在完全没有任何观测记录的年份(即该年份未出现在Beedata$year中),需要手动指定年份范围,比如year = 2010:2023来替代unique(Beedata$year)。
  • 确保已经加载dplyr和tidyr包,如果未安装,先运行install.packages(c("dplyr", "tidyr"))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:50:01