确定流式销售数据的开始/结束日期 (R / Tidyverse)

Determining Start / Finish Date for Stream Sales Data (R / Tidyverse)

查看 this sample file 我的测试数据。

Objective:确定(客户):1) 最早和最晚的销售额获得日期(以及那些月份的相应销售额); 2) 哪个月的销量最高(相应的销量是多少)

在整理阶段后卡住 - 假设这需要使用 'summarise':

library(tidyverse)

df <- read_csv("monthly_data.csv")

tidy_df <- df %>% 
  gather(-`Client Name`, key="Year", value="Sales") %>% 
  group_by(`Client Name`) %>%
  drop_na()

您可以按 Client Name 分组,然后按预期使用 Summarise,但我的解决方案可能会更优雅。

首先,我会得到每个 Client Name

的销售额最高的月份
library(lubridate)
library(dplyr)

top_months <- tidy_df %>%
 group_by(`Client Name`) %>%
 top_n(1, Sales) %>%
 mutate(top_month = month(mdy(Year))) %>%
 select(`Client Name`, top_month)

然后您可以汇总销售额并加入前几个月的最高销售额列表。

library(dplyr)
library(lubridate)

tidy_df %>%
 mutate(Year = mdy(Year) %>%
 group_by(`Client Name`) %>%
 summarise(`Latest Sale` = max(Year),
        `Earliest Sale` = min(Year),
        `Highest Grossing Month Sales` = max(Sales)) %>%
 left_join(., top_months, by = "Client Name")