找到5个按月排序的购买最多的产品练习

时间:2019-05-22 18:36:04

标签: r

我正在尝试学习如何使用R,但是我仍然很难进行此练习,因此我想对可能的实现提出建议。

创建工作以每个2015个月产生5个最畅销的产品 其次是售出的件数。

我的数据输入是:

2015-9-8,沙拉

2015-8-30,饼干,奶酪,沙拉,面包

2015-11-21,面包

2015-12-2,葡萄藤

2015-3-12,饼干,面包,牛奶

...

我需要帮助来创建包含如下结果的输出文件。

示例:

2015-01年:面包852,牛奶753,肉544,葡萄树501,鱼488

2015-02:牛奶744,黄油655,鸡蛋585,啤酒498,面包457

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将tidyverse包(dplyrtidyr)和lubridate组合使用,如下所示:

library(tidyverse)
library(lubridate)
data <- read.table(text = "2015-9-8,salad

          2015-8-30,cookies,cheese,salad,bread

          2015-11-21,bread

          2015-12-2,vine

          2015-3-12,cookies,bread,milk", 
          header = F)
data %>%
  separate(V1, into = c("date", letters[1:5]), sep = ",") %>% 
  gather(key, item, -date, na.rm = TRUE) %>% 
  select(-key) %>% 
  mutate(date = ymd(date), 
         month = floor_date(date, unit = "month")) %>% 
  group_by(month, item) %>% 
  count() %>% 
  spread(item, n, fill = 0)


## A tibble: 5 x 7
## Groups:   month [5]
#    month      bread cheese cookies  milk salad  vine
#    <date>     <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
#  1 2015-03-01     1      0       1     1     0     0
#  2 2015-08-01     1      1       1     0     1     0
#  3 2015-09-01     0      0       0     0     1     0
#  4 2015-11-01     1      0       0     0     0     0
#  5 2015-12-01     0      0       0     0     0     1