【问题标题】:Find minimum and maximum value for each group based on another variable in R [duplicate]根据R中的另一个变量查找每个组的最小值和最大值[重复]
【发布时间】:2021-03-05 19:30:44
【问题描述】:

我想知道如何根据每个站点 (siteID) 的水温 (Wtemp) 找到一年中的最小值和最大值 (DoY)。

示例数据集:

df1 <- data.frame(matrix(ncol = 4, nrow = 20))
x <- c("siteID", "Date", "DoY", "Wtemp")
colnames(df1) <- x
df1$siteID <- c(101,101,101,101,101,
                102,102,102,102,102,
                103,103,103,103,103,
                104,104,104,104,104)
df1$Date <- rep(seq(from = as.Date("2020-01-01"), to = as.Date("2020-01-05"), by = 1),4)  
df1$DoY <- rep(seq(from = 1, to = 5, by = 1),4) 
df1$Wtemp <- c(10,2,6,12,15,
               20,15,5,10,16,
               2,4,6,8,10,
               12,14,16,18,20)

输出应如下所示:

  siteID DoY_MaxWtemp DoY_MinWtemp
1    101            5            2
2    102            1            3
3    103            5            1
4    104            5            1

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以通过'siteID'分组,分别用which.maxwhich.min得到'Wtemp'的'max'和'min'值的索引,用它来提取'DoY'在@中的对应值987654323@

    library(dplyr)
    df1 %>%
       group_by(siteID) %>% 
       summarise(Doy_MaxWtemp = DoY[which.max(Wtemp)],
                Doy_MinWtemp = DoY[which.min(Wtemp)], .groups = 'drop')
    

    -输出

    # A tibble: 4 x 3
    #  siteID Doy_MaxWtemp Doy_MinWtemp
    #*  <dbl>        <dbl>        <dbl>
    #1    101            5            2
    #2    102            1            3
    #3    103            5            1
    #4    104            5            1
    

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2019-05-13
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多