在另一列中具有最多数据点的数据的排名

Ranking of data that have the most data points in another column

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

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

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

编辑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 种产品的大数据集上实现这一点?

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

出现的频率。

如果每个ArticleNr一天只能出现一次,那么确定频率就可以了,不用走弯路,确定一个参考[​​=11=]和Date的排名。

我的解决方案是:

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

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

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