在另一列中具有最多数据点的数据的排名
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())
我想按日期查看具有最多对应数据点的前 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())