This research aims to analyze Alberta Oil Sands Royalty Data to provide a comprehensive overview of oil sands projects undertaken by leading Canadian oil and gas companies, along with the revenue generated in 2023. The analysis will feature graphical illustrations to highlight trends in Alberta’s oil sands development.
Data Source: This analysis uses publicly available data obtained from the Government of Alberta’s website, specifically under the Department of Economic Development and Trade. The data repositories can be accessed via the following link: Oil Production by Municipality URL: https://open.alberta.ca/opendata/alberta-oil-sands-royalty-data1
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(dplyr)
library(reshape2)
##
## Attaching package: 'reshape2'
##
## The following object is masked from 'package:tidyr':
##
## smiths
Oil_Sands_Data <- read_csv("Oil-Sands-Project-Data.csv")
## Rows: 113 Columns: 22
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (6): Project, Project Name, Operator Name, Royalty Type, Payout Status,...
## dbl (3): Reporting Year, Gross Revenue ($/bbl), Royalty Rate (%)
## num (12): Project Revenue ($), Diluent Cost ($), Gross Revenue ($), Cleaned ...
## lgl (1): Operator ID
##
## ℹ 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.
view(Oil_Sands_Data)
glimpse(Oil_Sands_Data) # Quick summary of the oil sands project
## Rows: 113
## Columns: 22
## $ Project <chr> "CSR005", "CSR006", "CSR008"…
## $ `Project Name` <chr> "Peace River", "Wolf Lake Cr…
## $ `Operator ID` <lgl> NA, NA, NA, NA, NA, NA, NA, …
## $ `Operator Name` <chr> "CANADIAN NATURAL RESOURCES …
## $ `Reporting Year` <dbl> 2023, 2023, 2023, 2023, 2023…
## $ `Project Revenue ($)` <dbl> 25837165, 229424336, 8856406…
## $ `Diluent Cost ($)` <dbl> 9097452, 65475546, 14525368,…
## $ `Gross Revenue ($)` <dbl> 16739712, 163948789, 7403869…
## $ `Cleaned Crude Bitumen at RCP (barrels)` <dbl> 268884, 2268273, 1012371, 25…
## $ `Gross Revenue ($/bbl)` <dbl> 62.26, 72.28, 73.13, 72.90, …
## $ `Operating Costs ($)` <dbl> 37590027, 168034391, 2697023…
## $ `Capital Costs ($)` <dbl> 4048846, 66288833, 16051177,…
## $ `Return Allowance ($)` <dbl> 935783096, 1145929647, 0, 87…
## $ `Other Costs ($)` <dbl> 836986, 4650117, 0, 945639, …
## $ `Other Net Proceeds ($)` <dbl> 13590212, 173267958, 386462,…
## $ `Net Revenue ($)` <dbl> 0, 0, 31403745, 0, 0, 828135…
## $ `Royalty Type` <chr> "GROSS", "GROSS", "NET", "GR…
## $ `Royalty Rate (%)` <dbl> 5.00, 2.84, 29.84, 5.00, 7.1…
## $ `Royalty Payable ($)` <dbl> 836986, 4650117, 9372203, 94…
## $ `Payout Status` <chr> "PRE", "PRE", "POST", "PRE",…
## $ `Unrecovered Balance/Net Loss at EOP ($)` <dbl> 10299745144, 12535377348, 0,…
## $ Footnote <chr> NA, NA, NA, NA, NA, NA, NA, …
colnames(Oil_Sands_Data) # Viewing the data columns
## [1] "Project"
## [2] "Project Name"
## [3] "Operator ID"
## [4] "Operator Name"
## [5] "Reporting Year"
## [6] "Project Revenue ($)"
## [7] "Diluent Cost ($)"
## [8] "Gross Revenue ($)"
## [9] "Cleaned Crude Bitumen at RCP (barrels)"
## [10] "Gross Revenue ($/bbl)"
## [11] "Operating Costs ($)"
## [12] "Capital Costs ($)"
## [13] "Return Allowance ($)"
## [14] "Other Costs ($)"
## [15] "Other Net Proceeds ($)"
## [16] "Net Revenue ($)"
## [17] "Royalty Type"
## [18] "Royalty Rate (%)"
## [19] "Royalty Payable ($)"
## [20] "Payout Status"
## [21] "Unrecovered Balance/Net Loss at EOP ($)"
## [22] "Footnote"
The data has 113 rows and 22 columns
sapply(Oil_Sands_Data, function (x) sum(is.na(x))) # Checking for the missing variables
## Project Project Name
## 0 0
## Operator ID Operator Name
## 113 0
## Reporting Year Project Revenue ($)
## 0 0
## Diluent Cost ($) Gross Revenue ($)
## 0 0
## Cleaned Crude Bitumen at RCP (barrels) Gross Revenue ($/bbl)
## 0 0
## Operating Costs ($) Capital Costs ($)
## 0 0
## Return Allowance ($) Other Costs ($)
## 0 0
## Other Net Proceeds ($) Net Revenue ($)
## 0 0
## Royalty Type Royalty Rate (%)
## 0 0
## Royalty Payable ($) Payout Status
## 0 0
## Unrecovered Balance/Net Loss at EOP ($) Footnote
## 0 98
From the columns “Operator ID” has 113 variables missing; whilst “Footnote” has 98 variables missing.
Oil_Sands_Data_Cleaned <- Oil_Sands_Data %>%
select(-`Operator ID`)
Checking the minimum and maximum gross revenue generated in the reporting year 2023 by the Operators
Oil_Sand_Gross_Revenue <- Oil_Sands_Data_Cleaned %>%
select(`Project Name`, `Operator Name`, `Gross Revenue ($/bbl)`)
# Checking operator with the maximum revenue in $.bbl
max_revenue <- Oil_Sand_Gross_Revenue %>%
filter(`Gross Revenue ($/bbl)` == max(`Gross Revenue ($/bbl)`)) %>%
drop_na()
# Checking operator with the minimum royalty rate
min_revenue <- Oil_Sand_Gross_Revenue %>%
filter(`Gross Revenue ($/bbl)` == min(`Gross Revenue ($/bbl)`)) %>%
drop_na()
# Checking operator with the top ten(10) highest gross revenue
top_10_cutoff <- quantile(Oil_Sand_Gross_Revenue$`Gross Revenue ($/bbl)`, 0.90, na.rm = TRUE)
Top_10_Percent <- Oil_Sand_Gross_Revenue %>%
filter(`Gross Revenue ($/bbl)` >= top_10_cutoff) %>%
arrange(-`Gross Revenue ($/bbl)`)
print(max_revenue)
## # A tibble: 1 × 3
## `Project Name` `Operator Name` Gross Revenue ($/bbl…¹
## <chr> <chr> <dbl>
## 1 North Murphy Lindbergh CANADIAN NATURAL RESOURCES LIMI… 74.5
## # ℹ abbreviated name: ¹`Gross Revenue ($/bbl)`
print(min_revenue)
## # A tibble: 11 × 3
## `Project Name` `Operator Name` Gross Revenue ($/bbl…¹
## <chr> <chr> <dbl>
## 1 Elk Point CANADIAN NATURAL RE… 0
## 2 Frog Lake WEST LAKE ENERGY CO… 0
## 3 Seal-Northern Cadotte Block II BAYTEX ENERGY LTD. 0
## 4 Seal South CAVALIER ENERGY INC. 0
## 5 Germain Commercial Demonstration CANADIAN NATURAL RE… 0
## 6 Pelican Lake Project Grand Rapids CANADIAN NATURAL RE… 0
## 7 Algar Lake SAGD GRIZZLY OIL SANDS U… 0
## 8 Cliffdale BAYTEX ENERGY LTD. 0
## 9 Saleski CANADIAN NATURAL RE… 0
## 10 Sawn Lake Pilot ANDORA ENERGY CORPO… 0
## 11 Pike 1 Project CANADIAN NATURAL RE… 0
## # ℹ abbreviated name: ¹`Gross Revenue ($/bbl)`
print(Top_10_Percent)
## # A tibble: 12 × 3
## `Project Name` `Operator Name` Gross Revenue ($/bbl…¹
## <chr> <chr> <dbl>
## 1 North Murphy Lindbergh CANADIAN NATURAL RESOURCES … 74.5
## 2 Burnt Lake CANADIAN NATURAL RESOURCES … 73.9
## 3 Fire Tower CANADIAN NATURAL RESOURCES … 73.8
## 4 Goodlow CANADIAN NATURAL RESOURCES … 73.6
## 5 North Pelican Lake CANADIAN NATURAL RESOURCES … 73.4
## 6 Edward Lake CANADIAN NATURAL RESOURCES … 73.4
## 7 Bonnyville CANADIAN NATURAL RESOURCES … 73.3
## 8 West Marwayne CANADIAN NATURAL RESOURCES … 73.3
## 9 Brintnell CANADIAN NATURAL RESOURCES … 73.2
## 10 Passage Elk Project GEAR ENERGY LTD. 73.2
## 11 End Lake Project CANADIAN NATURAL RESOURCES … 73.2
## 12 Lindbergh Crown Agreement CANADIAN NATURAL RESOURCES … 73.1
## # ℹ abbreviated name: ¹`Gross Revenue ($/bbl)`
Maximum Gross Revenue of 74.64 $/bbl was generated from the project name “North Murphy Lindbergh” by the Operator “CANADIAN NATURAL RESOURCES LIMITED”. The minimum revenue generated is 0.
Oil_Sand_Royalty_Rates <- Oil_Sands_Data_Cleaned %>%
select(`Project Name`, `Operator Name`, `Royalty Rate (%)`) %>%
drop_na()
# Checking operator with the maximum royalty rate in percentage
max_royalty <- Oil_Sand_Royalty_Rates %>%
filter(`Royalty Rate (%)` == max(`Royalty Rate (%)`)) %>%
drop_na()
# Checking operator with the minimum royalty rate in percentage
min_royalty <- Oil_Sand_Royalty_Rates %>%
filter(`Royalty Rate (%)` == min(`Royalty Rate (%)`)) %>%
drop_na()
# Checking operator with the top ten(10) royalty rate
top_10_cutoff <- quantile(Oil_Sand_Royalty_Rates$`Royalty Rate (%)`, 0.90, na.rm = TRUE)
Top_10_Percent <- Oil_Sand_Royalty_Rates %>%
filter(`Royalty Rate (%)` >= top_10_cutoff) %>%
arrange(-`Royalty Rate (%)`)
print(max_royalty)
## # A tibble: 1 × 3
## `Project Name` `Operator Name` `Royalty Rate (%)`
## <chr> <chr> <dbl>
## 1 Murphy Seal BAYTEX ENERGY LTD. 36.6
print(min_royalty)
## # A tibble: 11 × 3
## `Project Name` `Operator Name` `Royalty Rate (%)`
## <chr> <chr> <dbl>
## 1 Elk Point CANADIAN NATURAL RESOUR… 0
## 2 Frog Lake WEST LAKE ENERGY CORP. 0
## 3 Seal-Northern Cadotte Block II BAYTEX ENERGY LTD. 0
## 4 Seal South CAVALIER ENERGY INC. 0
## 5 Germain Commercial Demonstration CANADIAN NATURAL RESOUR… 0
## 6 Pelican Lake Project Grand Rapids CANADIAN NATURAL RESOUR… 0
## 7 Algar Lake SAGD GRIZZLY OIL SANDS ULC 0
## 8 Cliffdale BAYTEX ENERGY LTD. 0
## 9 Saleski CANADIAN NATURAL RESOUR… 0
## 10 Sawn Lake Pilot ANDORA ENERGY CORPORATI… 0
## 11 Pike 1 Project CANADIAN NATURAL RESOUR… 0
print(Top_10_Percent)
## # A tibble: 42 × 3
## `Project Name` `Operator Name` `Royalty Rate (%)`
## <chr> <chr> <dbl>
## 1 Murphy Seal BAYTEX ENERGY LTD. 36.6
## 2 Seibert Lake CANADIAN NATURAL RESOURCES LIMITED 36.6
## 3 Brintnell CANADIAN NATURAL RESOURCES LIMITED 36.6
## 4 John Lake CANADIAN NATURAL RESOURCES LIMITED 36.6
## 5 Ashmont CANADIAN NATURAL RESOURCES LIMITED 36.6
## 6 CNRL Cold Lake CANADIAN NATURAL RESOURCES LIMITED 36.6
## 7 Fishing Lake CANADIAN NATURAL RESOURCES LIMITED 36.6
## 8 Foster Creek CENOVUS ENERGY INC. 36.6
## 9 Edward Lake CANADIAN NATURAL RESOURCES LIMITED 36.6
## 10 Elk Point Project CANADIAN NATURAL RESOURCES LIMITED 36.6
## # ℹ 32 more rows
The maximum royalty rate is 36.62% from the project name “Murphy Seal”, by the Operator “BAYTEX ENERGY LTD.” whilst minimum rate is 0%
Oil_Sand_Royalty_Summary <- Oil_Sands_Data_Cleaned %>%
select(`Project Name`, `Operator Name`, `Royalty Type`, `Royalty Rate (%)`) %>%
arrange(desc(`Royalty Type`)) %>%
drop_na()
print(Oil_Sand_Royalty_Summary)
## # A tibble: 113 × 4
## `Project Name` `Operator Name` `Royalty Type` `Royalty Rate (%)`
## <chr> <chr> <chr> <dbl>
## 1 Lindbergh Crown Agreement CANADIAN NATURAL… NET 29.8
## 2 Seibert Lake CANADIAN NATURAL… NET 36.6
## 3 Brintnell CANADIAN NATURAL… NET 36.6
## 4 Elk Point CANADIAN NATURAL… NET 0
## 5 John Lake CANADIAN NATURAL… NET 36.6
## 6 Ashmont CANADIAN NATURAL… NET 36.6
## 7 Frog Lake WEST LAKE ENERGY… NET 0
## 8 CNRL Cold Lake CANADIAN NATURAL… NET 36.6
## 9 Fishing Lake CANADIAN NATURAL… NET 36.6
## 10 Foster Creek CENOVUS ENERGY I… NET 36.6
## # ℹ 103 more rows
Project names and the corresponding operator names with the royalty rate greater than 10%; all shared same royalty type “NET”, except for the “Frog Lake & Elk Point” project that have 0%. Conversely, project names and the corresponding operator names with the royalty rate less than 10%; all shared same royalty type “GROSS”.
Oil_Sand_Payout_Status <- Oil_Sands_Data_Cleaned %>%
select(`Project Name`, `Operator Name`, `Payout Status`) %>%
arrange(`Payout Status`) %>%
drop_na()
print(Oil_Sand_Payout_Status)
## # A tibble: 113 × 3
## `Project Name` `Operator Name` `Payout Status`
## <chr> <chr> <chr>
## 1 Lindbergh Crown Agreement CANADIAN NATURAL RESOURCES LIMITED POST
## 2 Seibert Lake CANADIAN NATURAL RESOURCES LIMITED POST
## 3 Ft. Kent CANADIAN NATURAL RESOURCES LIMITED POST
## 4 Brintnell CANADIAN NATURAL RESOURCES LIMITED POST
## 5 Frog Lake CANADIAN NATURAL RESOURCES LIMITED POST
## 6 Elk Point CANADIAN NATURAL RESOURCES LIMITED POST
## 7 John Lake CANADIAN NATURAL RESOURCES LIMITED POST
## 8 Ashmont CANADIAN NATURAL RESOURCES LIMITED POST
## 9 Frog Lake WEST LAKE ENERGY CORP. POST
## 10 Lindbergh North CANADIAN NATURAL RESOURCES LIMITED POST
## # ℹ 103 more rows
68 projects exhibit the “POST” payout status, whilst 45 projects exhibit the “PRE” payout status!
Oil_Sand_Footnote <- Oil_Sands_Data_Cleaned %>%
select(`Project Name`, `Operator Name`, Footnote) %>%
arrange(Footnote) %>%
drop_na()
view(Oil_Sand_Footnote)
Visualizing the project name and Operator name by the footnote
ggplot(data = Oil_Sand_Footnote) +
geom_bar(mapping = aes(x = `Project Name`, fill = `Operator Name`,, alpha = 0.7))+
facet_wrap(~ `Operator Name`, scales = "free_x")+
labs(
title = "Project Distribution by Operator", subtitle = "bar plots showing number of projects per operator", x = "Project Name", y = "Count")
The graphical illustrations above indicate that Canadian Natural
Resources has undertaken the highest number of projects to date and also
recorded the highest gross revenue in 2023.
Analysis from this data indicates that Canadian Natural Resources is a leading player in the Alberta oil sands industry, demonstrating both a high level of activity and significant financial success in the year 2023.