df <- read.csv("Data/Sample - Superstore.csv")
df
str(df)
## 'data.frame':    9994 obs. of  21 variables:
##  $ Row.ID       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Order.ID     : chr  "CA-2016-152156" "CA-2016-152156" "CA-2016-138688" "US-2015-108966" ...
##  $ Order.Date   : chr  "11/8/2016" "11/8/2016" "6/12/2016" "10/11/2015" ...
##  $ Ship.Date    : chr  "11/11/2016" "11/11/2016" "6/16/2016" "10/18/2015" ...
##  $ Ship.Mode    : chr  "Second Class" "Second Class" "Second Class" "Standard Class" ...
##  $ Customer.ID  : chr  "CG-12520" "CG-12520" "DV-13045" "SO-20335" ...
##  $ Customer.Name: chr  "Claire Gute" "Claire Gute" "Darrin Van Huff" "Sean O'Donnell" ...
##  $ Segment      : chr  "Consumer" "Consumer" "Corporate" "Consumer" ...
##  $ Country      : chr  "United States" "United States" "United States" "United States" ...
##  $ City         : chr  "Henderson" "Henderson" "Los Angeles" "Fort Lauderdale" ...
##  $ State        : chr  "Kentucky" "Kentucky" "California" "Florida" ...
##  $ Postal.Code  : int  42420 42420 90036 33311 33311 90032 90032 90032 90032 90032 ...
##  $ Region       : chr  "South" "South" "West" "South" ...
##  $ Product.ID   : chr  "FUR-BO-10001798" "FUR-CH-10000454" "OFF-LA-10000240" "FUR-TA-10000577" ...
##  $ Category     : chr  "Furniture" "Furniture" "Office Supplies" "Furniture" ...
##  $ Sub.Category : chr  "Bookcases" "Chairs" "Labels" "Tables" ...
##  $ Product.Name : chr  "Bush Somerset Collection Bookcase" "Hon Deluxe Fabric Upholstered Stacking Chairs, Rounded Back" "Self-Adhesive Address Labels for Typewriters by Universal" "Bretford CR4500 Series Slim Rectangular Table" ...
##  $ Sales        : num  262 731.9 14.6 957.6 22.4 ...
##  $ Quantity     : int  2 3 2 5 2 7 4 6 3 5 ...
##  $ Discount     : num  0 0 0 0.45 0.2 0 0 0.2 0.2 0 ...
##  $ Profit       : num  41.91 219.58 6.87 -383.03 2.52 ...
df <- df %>%
  mutate(Order.Date=mdy(Order.Date)) %>%
  mutate(Ship.Date=mdy(Ship.Date))
df
df <- df %>%
  mutate(Ship.Mode=as.factor(Ship.Mode)) %>%
  mutate(Segment=as.factor(Segment)) %>%
  mutate(Country=as.factor(Country)) %>%
  mutate(State=as.factor(State)) %>%
  mutate(Region=as.factor(Region)) %>%
  mutate(Category=as.factor(Category)) %>%
  mutate(Sub.Category=as.factor(Sub.Category))
df
# Vamos a crear una grafica de ventas por dia
daily_sales <- df %>% 
  mutate(Day = floor_date(Order.Date, unit = "day")) %>%
  group_by(Day) %>%
  summarise(Sales.d = sum(Sales))
daily_sales
ggplot(daily_sales, aes(x=Day, y=Sales.d)) +
  geom_line(color="blue") +
  geom_point(color="red") +
  labs(title = "Ventas diarias",
       x="Días",
       y="Ventas") +
  scale_x_date(breaks = "60 days", date_labels = "%b %Y") +
  scale_y_continuous(breaks = pretty_breaks(15)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Graficas semanales

# Vamos a crear una grafica de ventas por semana / Let's create a weekly sales graph
weekly_sales <- df %>% 
  mutate(Week = floor_date(Order.Date, unit = "week")) %>%  # Agrupar por semana / Group by week
  group_by(Week) %>%  
  summarise(Sales.w = sum(Sales))  # Sumar ventas por semana / Sum sales per week
weekly_sales
# Gráfica de Ventas Semanales / Weekly Sales Graph
ggplot(weekly_sales, aes(x=Week, y=Sales.w)) +
  geom_line(color="blue") +
  geom_point(color="red") +
  labs(title = "Ventas semanales",
       x="Semanas",
       y="Ventas") +
  scale_x_date(breaks = "4 weeks", date_labels = "%b %Y") +  # Ajustar etiquetas de las semanas / Adjust week labels
  scale_y_continuous(breaks = pretty_breaks(15)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Ahora obtengo la gráfica por mes

# Vamos a crear una grafica de ventas por mes / Let's create a monthly sales graph
monthly_sales <- df %>% 
  mutate(Month = floor_date(Order.Date, unit = "month")) %>%  # Agrupar por mes / Group by month
  group_by(Month) %>%  
  summarise(Sales.m = sum(Sales))  # Sumar ventas por mes / Sum sales per month
monthly_sales
# Gráfica de Ventas Mensuales / Monthly Sales Graph
ggplot(monthly_sales, aes(x=Month, y=Sales.m)) +
  geom_line(color="blue") +
  geom_point(color="red") +
  labs(title = "Ventas mensuales",
       x="Meses",
       y="Ventas") +
  scale_x_date(breaks = "1 month", date_labels = "%b %Y") +  # Ajustar etiquetas de los meses / Adjust month labels
  scale_y_continuous(breaks = pretty_breaks(15)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))