我正在尝试学习如何使用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
谢谢您的帮助。
答案 0 :(得分:0)
您可以将tidyverse
包(dplyr
和tidyr
)和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