【问题标题】:Ranking of data that have the most data points in another column在另一列中具有最多数据点的数据的排名
【发布时间】:2021-11-17 22:31:38
【问题描述】:

我想查看按日期计算的具有最多对应数据点的前 10 种产品。 由于一天内售出的数量记录在“soldUnits”下,因此在某一天没有重复的 ArticleNr 条目。 因此,示例数据集中的最大数量为“365 obs. of 3 variables”。 如何过滤我的数据集?

编辑:给定编辑后的数据集,我想过滤掉文章编号“1”,因为它在“日期”列中具有最对应的数据

我的真实数据中的问题是大约有 2000 个产品,我在“日期”列中看不到哪个 Article Nr 具有最对应的数据

编辑2: 作为 MRE,我们可以看看这个数据集

df <- data.frame(ArticleNr = c("1", "2", "3", "1", "2", "1"),
                created = as.Date(c("2020-01-01", "2020-01-01", "2020-01-01", "2020-01-02", "2020-01-02", "2020-01-03"), "%Y-%m-%d", tz = "GMT"),
                soldUnits = c(1, 1, 1, 1, 1, 1),
                stringsAsFactors=FALSE)

这导致

   ArticleNr soldDate      soldUnits
     11      2020-01-01         1   
     22      2020-01-01         1   
     33      2020-01-01         1   
     11      2020-01-02         1   
     22      2020-01-02         1   
     11      2020-01-03         1

我想要的结果是具有 n 个排名(前 3 名、前 10 名、前 25 名)的排名

在这个 Dataframe 中,它看起来像这样

   Rank  ArticleNr  soldOnDates     
     1     11         3         #<-- ArticleNr 11 was sold on 3 out of 3 days, so it has Rank 1 
     2     22         2   
     3     33         1   

如何在包含大约 2000 种产品的大型数据集上实现这一目标?

【问题讨论】:

  • 在您的示例数据中,哪些“产品 (...) 按日期具有最多的数据点”?似乎两个日期都有四个不同的Article Nr,每个出现一次。你能调整你的示例数据来展示你想要做什么吗?
  • 请提供minimal reproducible example 而不是表格。您还可以阅读this post 以增加获得答案的机会。并展示您的预期结果。

标签: r dplyr data-science data-analysis


【解决方案1】:

这相当于使用 table() 的@Pa_Syl 答案。作为额外的奖励,您可以使用自己的列名来代替 Var1 和 Freq。需要summarise()之后的部分来计算每个ArticleNr的排名。

df %>% group_by(ArticleNr) %>% summarise(SoldOnDate = n()) %>%
 ungroup() %>% arrange(-SoldOnDate) %>% mutate(rank = 1:n())

【讨论】:

    【解决方案2】:

    我想得太抽象了,没有看到最明显和最简单的解决方案。 在我的示例中,我现在已经确定了ArticleNr 出现的频率。

    如果每个ArticleNr一天只能出现一次,就可以不走弯路,确定频率,确定ArticleNrDate的排名。

    我的解决办法是:

    table(df$ArticleNr) %>% 
            as.data.frame() %>% 
            arrange(desc(Freq))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2023-03-28
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多