如何在R中基于多条件汇总计数:按物种分组统计长度区间样本数
解决方案
你可以在dplyr的summarize函数中直接通过条件判断+求和的方式,一次性统计每个分组下符合不同长度条件的样本数,无需多次筛选合并。具体代码如下:
完整代码
library(dplyr) # 示例数据 df <- data.frame(Species = c("BRK","BRK","BRK","RGN","BRK","RGN"), Length = c(4.2,4.4,5.3,1.6,5.9,8.2)) # 分组汇总 df1 <- df %>% group_by(Species) %>% summarize( Gtr_4.5 = sum(Length > 4.5, na.rm = TRUE), Less_4.5 = sum(Length < 4.5, na.rm = TRUE) )
代码说明
group_by(Species):按物种对数据分组,保持你原有逻辑。sum(Length > 4.5):Length > 4.5会生成一个布尔向量(满足条件为TRUE,不满足为FALSE),R中TRUE等价于1、FALSE等价于0,sum()会直接统计满足条件的样本数量。na.rm = TRUE:可选参数,用于忽略数据中可能存在的缺失值(NA),避免汇总结果出现NA。
运行结果
执行代码后得到的df1与你期望的格式完全一致:
# A tibble: 2 × 3 Species Gtr_4.5 Less_4.5 <chr> <int> <int> 1 BRK 2 2 2 RGN 1 1
内容的提问来源于stack exchange,提问作者Rnchriz
相关产品推荐
相关产品推荐

