R dplyr 历史最大值

R dplyr historic maxima

我在这个例子中使用了创建每个季节的最高温度。此外,我现在试图包括一个额外的列,为每一行显示该特定年份冬季的历史最高温度(例如,2001 年冬季的 2001 年冬季值、2002 年冬季的 2002 年冬季值等.).

我可以通过在 dplyr 外进行子集化和合并来解决这个问题,但我想知道是否有一种方法可以在 dplyr 内优雅地做到这一点?

library(dplyr)
library(zoo)
library(DataCombine)

df = expand.grid(year = 2000:2003,
                 season = c("spring","summer","fall","winter"),
                 month=1:3)

df$temp = rpois(dim(df)[1], 5) #  temperature

df2 = df %>%
  group_by(year, season) %>%
  summarise(max_temp=max(temp)) 

你可以试试

 library(dplyr)  
 df %>%
      group_by(year) %>%
      mutate(max_temp = max(temp[season=='winter']))

或使用 left_join

的选项
  left_join(df,
        df %>% 
          filter(season=='winter') %>%
          group_by(year) %>%
           summarise(max_temp=max(temp))) 

带有 data.table 的紧凑选项是

library(data.table)
setDT(df)[, max_temp := max(temp[season=='winter']) ,year][]