确定流式销售数据的开始/结束日期 (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")
查看 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")