我有一个数据框
数据

Date          Marks
21-01-2019     18
22-01-2019     12
23-01-2019     14
24-01-2019     20
25-01-2019     16
19-02-2019     12
20-02-2019     11
21-02-2019     18
22-02-2019     15
23-02-2019     20
24-02-2019     14


我想按月份和特定年份对数据进行分组,以获得最低分。我的输出如下所示:

Date          Marks
22-01-2019     12
20-02-2019     11

最佳答案

要获得每月和每年的最小值,可以执行以下操作(涉及dplyr):

df %>%
 group_by(Date = format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y")) %>%
 summarise_all(min)

  Date    Marks
  <chr>   <int>
1 01-2019    12
2 02-2019    11


base R相同:

aggregate(Marks ~ cbind(Date = format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y")),
          FUN = min,
          data = df)


如果您还想返回相应的日期:

df %>%
 group_by(month_year = format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y")) %>%
 slice(which.min(Marks)) %>%
 ungroup() %>%
 select(-month_year)

  Date       Marks
  <chr>      <int>
1 22-01-2019    12
2 20-02-2019    11


base R相同:

df[df$Marks == with(df, ave(Marks, format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y"),
                            FUN = function(x) x[which.min(x)])), ]

关于r - 如何在R中的不同日期中找到最小值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58167846/

10-14 13:13
查看更多