R语言按cycle分组汇总N值及classifier与valid相等时N之和的实现
R语言按分组统计数值总和的实现方案
前置说明
你提供的测试数据中标识符列名为cicle,和需求描述中的cycle拼写不一致,以下代码适配测试数据列名,若实际数据列名不同可自行替换。
依赖包
优先使用dplyr包实现,先加载包:
library(dplyr)
实现代码
方案1:生成每个分组1行的汇总表(符合需求描述的新data frame要求)
result <- test %>% # 按标识符列分组 group_by(cicle) %>% summarise( # 新增第一列:分组内所有N的总和 total_N = sum(N, na.rm = TRUE), # 新增第二列:分组内classifier和valid相等行的N总和 match_N = sum(N[classifier == valid], na.rm = TRUE) )
参数说明:na.rm = TRUE用于避免列中存在缺失值时返回NA,若无缺失值可删除该参数。
方案2:保留原始所有行,新增分组统计列
如果需要保留原始数据集的所有行,同时追加两个分组统计列,将summarise替换为mutate即可:
result_with_raw <- test %>% group_by(cicle) %>% mutate( total_N = sum(N, na.rm = TRUE), match_N = sum(N[classifier == valid], na.rm = TRUE) ) %>% ungroup()
运行结果示例
基于给出的测试数据集运行方案1,输出结果如下:
# A tibble: 3 × 3 cicle total_N match_N <chr> <dbl> <dbl> 1 1 1.13 1.51 2 2 0.428 1.51 3 3 -0.523 1.51
内容的提问来源于stack exchange,提问作者Wilson Souza
相关产品推荐
相关产品推荐

