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

如何在R中按class和species计算二元变量died的占比?

计算各物种分组死亡率并绘制统计图

1. 数据预处理(计算死亡占比)

可以用dplyr包快速分组计算每个species下各class的died=1占比(由于died是0/1二元变量,直接取均值就是死亡占比):

# 加载dplyr包
library(dplyr)

# 计算分组死亡占比
df_summary <- df %>%
  group_by(species, class) %>%
  summarize(
    died_ratio = mean(died, na.rm = TRUE),  # 核心:计算死亡占比
    total_samples = n(),  # 可选:统计每组样本量,用于参考
    .groups = "drop"  # 取消分组状态,方便后续绘图
  )

如果不想用dplyr,基础R也能实现:

# 基础R方法:用aggregate函数分组计算
df_summary <- aggregate(died ~ species + class, data = df, FUN = mean)
names(df_summary)[3] <- "died_ratio"  # 重命名列名更直观

2. 绘制分物种统计图

用ggplot2包绘制以class为X轴、死亡占比为Y轴的可视化图,两种常用展示方式:

方式一:用颜色区分不同物种

library(ggplot2)

ggplot(df_summary, aes(x = class, y = died_ratio, color = species)) +
  geom_line(size = 1) +  # 折线展示死亡占比随class的变化趋势
  geom_point(size = 2) +  # 标记每个class的具体数值点
  labs(x = "Class", y = "死亡占比", color = "物种") +
  theme_minimal()

方式二:用分面单独展示每个物种

ggplot(df_summary, aes(x = class, y = died_ratio)) +
  geom_line(size = 1) +
  geom_point(size = 2) +
  labs(x = "Class", y = "死亡占比") +
  facet_wrap(~ species) +  # 按物种拆分独立子图
  theme_minimal()

补充:补全缺失分组(可选)

如果部分class在某个species下没有数据,结果会自动忽略该组合。若需要补全为0占比,可结合tidyr包处理:

library(tidyr)

df_summary <- df %>%
  group_by(species, class) %>%
  summarize(died_ratio = mean(died, na.rm = TRUE), .groups = "drop") %>%
  complete(species, class = 1:40, fill = list(died_ratio = 0))  # 补全所有class,缺失值填0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:42:09