首页 > 解决方案 > 如何通过排除 r 中第 1 组中的前 300 个测量值来计算平均值

问题描述

我有许多 1 秒的发射测量值,并按事件编号对它们进行了分组。但是,我想从第 1 组中删除前 300 次测量,并计算从 301 到该组中最后一次测量的组平均值。对于剩余的组,我将只使用所有测量值计算组平均值,无需取出前 300 秒。

我知道在不排除第 1 组中的前 300 个测量值的情况下计算组平均值的代码,例如:

StartsSummary <- ddply(emission, "Group", summarize,  CO2_avg = mean(CO2_DC))
emission <- data.frame(Group= c(rep(1, 400), rep(2, 305),rep(3, 200)), CO2_DC = c(rep(0.5, 350), rep(1, 400), rep(1.5, 155))

我希望结果如下:

Group  CO2_avg
1      0.75    (excluding first 300 measurements in group 1)
2      1       (include all measurements in group 2)
3      1.3875  (include all measurements in group 3)

标签: rfilteraverage

解决方案


根据实际问题的大小,最简单的方法是分两个阶段进行计算

library(tidyverse)

# Mean of groups 2 and 3 using all data                       
emission %>% 
  filter(Group != 1) %>%  # exclude group 1
  group_by(Group) %>% 
  summarise(mean(CO2_DC))


# Mean of group 1 exclusing the first 300 rows
emission %>% 
  filter(Group == 1) %>% 
  slice(301:n()) %>% 
  summarise(mean(CO2_DC))

推荐阅读