You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言统计商品对应日期数据点数量并生成TopN排名的实现方法

统计商品在售日期排名的R实现方案

你可以根据自己的使用习惯选择以下两种实现方式,2000个商品的数据集下两种方法的运行效率都足够,不会有性能问题。

方法1:tidyverse(dplyr)实现(更易读,推荐)

# 加载依赖包,未安装的话先运行 install.packages("tidyverse")
library(dplyr)

# 核心统计逻辑
rank_df <- df %>%
  # 按商品编号分组
  group_by(ArticleNr) %>%
  # 统计在售日期数,因无同商品同日期重复记录,直接统计行数即可;如果后续出现重复可替换为n_distinct(created)
  summarise(soldOnDates = n(), .groups = "drop") %>%
  # 按在售日期数降序排序
  arrange(desc(soldOnDates)) %>%
  # 生成排名,默认并列排名取最小位次,需要连续排名可替换为dense_rank()
  mutate(Rank = min_rank(desc(soldOnDates))) %>%
  # 调整列顺序匹配你需要的输出格式
  select(Rank, ArticleNr, soldOnDates)

# 筛选不同档位排名示例
top3_df <- rank_df %>% filter(Rank <= 3)
top10_df <- rank_df %>% filter(Rank <= 10)
top25_df <- rank_df %>% filter(Rank <= 25)

运行上述代码后输出的rank_df就完全匹配你给出的样例输出格式。

方法2:base R实现(无需额外安装包)

# 统计每个商品的在售日期数
count_df <- aggregate(created ~ ArticleNr, df, length)
# 重命名列
colnames(count_df)[2] <- "soldOnDates"
# 按在售日期数降序排序
count_df <- count_df[order(-count_df$soldOnDates), ]
# 生成排名列
count_df$Rank <- rank(-count_df$soldOnDates, ties.method = "min")
# 调整列顺序
rank_df <- count_df[, c("Rank", "ArticleNr", "soldOnDates")]

# 筛选Top3示例
top3_df <- rank_df[rank_df$Rank <=3, ]

注意:如果你的数据集里日期列名为soldDate,把上述代码里的created替换为soldDate即可。

内容的提问来源于stack exchange,提问作者Pa_Syl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:24:10