# Load CSV (from same folder as Rmd)
stock_df <- read_csv("stock_df.csv")
## Rows: 5 Columns: 106
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr   (1): company
## dbl (105): 2019_week1, 2019_week2, 2019_week3, 2019_week4, 2019_week5, 2019_...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Preview original data
head(stock_df)
## # A tibble: 5 × 106
##   company   `2019_week1` `2019_week2` `2019_week3` `2019_week4` `2019_week5`
##   <chr>            <dbl>        <dbl>        <dbl>        <dbl>        <dbl>
## 1 Amazon          1848.        1641.        1696.        1671.        1626. 
## 2 Apple             73.4         38.1         39.2         39.4         41.6
## 3 Facebook         205.         144.         150.         149.         166. 
## 4 Google          1337.        1057.        1098.        1091.        1111. 
## 5 Microsoft        158.         103.         108.         107.         103. 
## # ℹ 100 more variables: `2019_week6` <dbl>, `2019_week7` <dbl>,
## #   `2019_week8` <dbl>, `2019_week9` <dbl>, `2019_week10` <dbl>,
## #   `2019_week11` <dbl>, `2019_week12` <dbl>, `2019_week13` <dbl>,
## #   `2019_week14` <dbl>, `2019_week15` <dbl>, `2019_week16` <dbl>,
## #   `2019_week17` <dbl>, `2019_week18` <dbl>, `2019_week19` <dbl>,
## #   `2019_week20` <dbl>, `2019_week21` <dbl>, `2019_week22` <dbl>,
## #   `2019_week23` <dbl>, `2019_week24` <dbl>, `2019_week25` <dbl>, …
# Reshape from wide to long for all years
stock_df_long <- stock_df %>%
  pivot_longer(
    cols = matches("^\\d{4}_week\\d+$"),  # matches columns like 2019_week1, 2020_week2, etc.
    names_to = "week",
    values_to = "price"
  ) %>%
  separate(week, into = c("year", "week"), sep = "_week") %>%
  mutate(
    year = as.integer(year),
    week = as.integer(week)
  )

# Preview reshaped data
head(stock_df_long)
## # A tibble: 6 × 4
##   company  year  week price
##   <chr>   <int> <int> <dbl>
## 1 Amazon   2019     1 1848.
## 2 Amazon   2019     2 1641.
## 3 Amazon   2019     3 1696.
## 4 Amazon   2019     4 1671.
## 5 Amazon   2019     5 1626.
## 6 Amazon   2019     6 1588.
# Optional: plot stock prices by company over weeks
ggplot(stock_df_long, aes(x = week, y = price, color = company)) +
  geom_line() +
  facet_wrap(~year, scales = "free_x") +
  labs(title = "Weekly Stock Prices by Company",
       x = "Week",
       y = "Price") +
  theme_minimal()