【问题标题】:Simplify dplyr code in R for selecting minimum value in a dataset简化 R 中的 dplyr 代码以在数据集中选择最小值
【发布时间】:2021-07-30 16:41:24
【问题描述】:

我需要在产品数据集中打印具有 Premium 产品最低价格的前 3 个月:

   Date          Grade   Price
   <chr>         <ord>    <dbl>
 1 January 2016  Regular   22.20
 2 January 2016  Premium   32.45
 3 January 2016  Premium   55.34
 4 February 2016 Regular   23.69
 ... with 100 more rows

结果将如下所示:

      Date          Price
      <chr>         <dbl>
1 March 2017         21.13
2 May 2017           21.35
3 October 2017       21.67

使用dplyr,我有以下代码,但似乎有点长。有什么办法可以简化吗?

min <- select(product, Date, Price)
min <- filter(min, Grade == "Premium")
min <- arrange(min, Price)
min[1:3,]

【问题讨论】:

    标签: r dplyr dataset tidyverse min


    【解决方案1】:

    如果我们想避免重复赋值,请使用链(%&gt;%)。似乎这些步骤是独特的步骤,在dplyr中可能无法简化

     library(dplyr)
     product %>%
          select(Date, Price)  %>%
          filter(Grade == 'Premium') %>%
          arrange(Price) %>%
          slice_head(3)
    

    base R,我们可以简化一下

    out <- subset(product, select = c(Date, Price), subset = Grade == 'Premium')
    head(out[order(out$Price),], 3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      相关资源
      最近更新 更多