使用 slice_max() 对行进行子集化 - 如何在 R 中使用它?

问题描述 投票:0回答:1

我必须创建一个部分数据集,其中仅包含每年最高日平均气温值的 20 天。我的数据集如下所示:

日期 意思是
1997-07-15 27.05292
1997-07-17 26.86542
1997-06-21 26.10958
1997-07-16 26.05833
1997-07-14 26.02500
1997-06-25 25.80125
1997-07-18 25.36208
1997-06-22 25.18875
1997-06-29 24.72333
1997-06-30 24.71000

...

我尝试使用下面的代码,但这个代码仅过滤每年的最大值并创建一个包含 20 行的数据框 - 但我需要每年(1997 - 2010)的前 20 个平均值。顺便说一句,我使用 data.frame 类。如果有人能帮助我,我将非常感激,我只是不明白! top_20_per_year <- daily_mean_temp_sorted %>% slice_max(mean, n = 20) %>%


r max row filtering subset
1个回答
0
投票
mean

取前 2 个

year
值的示例:
library(tidyverse)

df <- tribble(
  ~date, ~mean,
  "1997-07-15", 27.05292,
  "1997-07-17", 26.86542,
  "1997-06-21", 26.10958,
  "1997-07-16", 26.05833,
  "1997-07-14", 26.02500,
  "1998-06-25", 25.80125,
  "1998-07-18", 25.36208,
  "1998-06-22", 25.18875,
  "1998-06-29", 24.72333,
  "1998-06-30", 24.71000
)

df |> 
  mutate(date = ymd(date), year = year(date)) |> 
  slice_max(n = 2, order_by = mean, by = year)
#> # A tibble: 4 × 3
#>   date        mean  year
#>   <date>     <dbl> <dbl>
#> 1 1997-07-15  27.1  1997
#> 2 1997-07-17  26.9  1997
#> 3 1998-06-25  25.8  1998
#> 4 1998-07-18  25.4  1998

创建于 2024-04-29,使用 

reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.