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

在R中合并列名不一致的鸟类计数DataFrame并生成两种输出

R语言处理鸟类计数数据的两种解决方案

先模拟你的测试数据(直接替换成你的真实数据即可):

df1 <- data.frame(Especies = c("麻雀", "白头鹎", "喜鹊"), Conteo = c(12, 8, 3))
df2 <- data.frame(Species = c("麻雀", "喜鹊", "乌鸦"), Count = c(9, 5, 6))

首先确保安装并加载dplyr包(处理数据的常用工具包):

# 首次使用先安装
install.packages("dplyr")
# 加载包
library(dplyr)

需求一:合并后统计各物种总计数

核心思路:先统一两个数据框的列名,再合并后按物种分组求和

# 重命名df2的列,和df1保持一致
df2_renamed <- df2 %>% rename(Especies = Species, Conteo = Count)

# 合并两个数据框,按物种分组计算总计数
total_counts <- bind_rows(df1, df2_renamed) %>%
  group_by(Especies) %>%
  summarise(总计数 = sum(Conteo))

# 查看结果
print(total_counts)

运行后会得到每个物种两次计数的总和,不管某个物种只在其中一次出现。


需求二:合并物种并分列显示两次计数(无数据填0)

核心思路:用全连接匹配所有物种,再把缺失值替换为0

# 分别重命名列,明确区分两次计数
df1_renamed <- df1 %>% rename(Species = Especies, 计数_日期1 = Conteo)
df2_renamed <- df2 %>% rename(计数_日期2 = Count)

# 全连接所有物种,匹配不上的位置会显示NA
split_counts <- full_join(df1_renamed, df2_renamed, by = "Species") %>%
  # 把NA替换成0
  mutate(计数_日期1 = ifelse(is.na(计数_日期1), 0, 计数_日期1),
         计数_日期2 = ifelse(is.na(计数_日期2), 0, 计数_日期2))

# 查看结果
print(split_counts)

运行后每个物种占一行,两列分别显示两次的计数,没出现过的物种对应列填0。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:35:02