The goal of rgridstatus is to provide a R API wrapper for the GridStatusIO API.
See also my blog post describing some features of the package.
You can install the development version of rgridstatus from GitHub with:
# install.packages("devtools")
devtools::install_github("andypicke/rgridstatus")
You will need to register for an API key. By default, all functions assume you have stored your API key in your .Renviron file with the name GRIDSTATUS_API_KEY.
library(rgridstatus)
info <- get_available_datasets()
head(info)
#> id
#> 1 all_records
#> 2 all_records_timeseries
#> 3 caiso_as_prices
#> 4 caiso_as_procurement_dam
#> 5 caiso_curtailed_non_operational_generator_report
#> 6 caiso_curtailment
#> name
#> 1 All Records
#> 2 All Records Timeseries
#> 3 CAISO As Prices
#> 4 CAISO As Procurement Dam
#> 5 CAISO Curtailed Non Operational Generator Report
#> 6 CAISO Curtailment
#> description
#> 1 Top daily records for various metrics across all ISOs
#> 2 Timeline of new records for various metrics in all ISOs
#> 3 Ancillary Services Prices as reported by CAISO.
#> 4 Ancillary services procurement data from CAISO.\nIncludes total MW procured and costs. Corresponds\nto CAISO AS_RESULTS dataset on OASIS. See caiso_as_prices dataset\nfor per MW prices that result from market run.
#> 5 Prior Day Curtailed Non-Operational Generator Report as reported by CAISO.\n\nSource: http:https://www.caiso.com/market/Pages/OutageManagement/CurtailedandNonOperationalGenerators.aspx\nGlossary: http:https://www.caiso.com/market/Pages/OutageManagement/Curtailed-OperationalGeneratorReportGlossary.aspx
#> 6 Daily Curtailment data as reported by CAISO.\n\nSource: http:https://www.caiso.com/informed/Pages/ManagingOversupply.aspx
#> earliest_available_time latest_available_time source
#> 1 2019-06-11T03:25:00+00:00 2024-04-05T15:00:00+00:00 gridstatus
#> 2 2019-04-05T15:20:00+00:00 2024-04-01T06:05:00+00:00 gridstatus
#> 3 2020-01-01T08:00:00+00:00 2024-05-15T06:00:00+00:00 caiso
#> 4 2010-01-01T08:00:00+00:00 2024-05-15T06:00:00+00:00 caiso
#> 5 2021-06-18T07:00:00+00:00 2024-05-13T07:00:00+00:00 caiso
#> 6 2016-06-30T07:00:00+00:00 2024-05-13T01:00:00+00:00 caiso
#> last_checked_time
#> 1 2024-05-14T15:25:55+00:00
#> 2 2024-05-14T15:25:55+00:00
#> 3 2024-05-14T15:27:59+00:00
#> 4 2024-05-14T15:28:04+00:00
#> 5 2024-05-13T15:30:07+00:00
#> 6 2024-05-14T15:28:09+00:00
#> primary_key_columns
#> 1 iso, rank, record_type, metric_name
#> 2 iso, interval_start_utc, record_type, metric_name
#> 3 interval_start_utc, region, market
#> 4 interval_start_utc, region
#> 5 publish_time_utc, outage_mrid, curtailment_start_time
#> 6 interval_start_utc, curtailment_type, curtailment_reason, fuel_type
#> publish_time_column time_index_column subseries_index_column
#> 1 <NA> interval_start_utc <NA>
#> 2 <NA> interval_start_utc <NA>
#> 3 <NA> interval_start_utc region
#> 4 <NA> interval_start_utc region
#> 5 publish_time_utc curtailment_start_time <NA>
#> 6 <NA> interval_start_utc <NA>
#> all_columns
#> 1 rank, iso, interval_start_utc, date, record_type, metric_name, metric_value, BIGINT, TEXT, TIMESTAMP, DATE, TEXT, TEXT, DOUBLE PRECISION
#> 2 iso, interval_start_utc, date, record_type, metric_name, metric_value, TEXT, TIMESTAMP, DATE, TEXT, TEXT, DOUBLE PRECISION
#> 3 interval_start_utc, interval_end_utc, region, market, non_spinning_reserves, regulation_down, regulation_mileage_down, regulation_mileage_up, regulation_up, spinning_reserves, TIMESTAMP, TIMESTAMP, VARCHAR, VARCHAR, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION
#> 4 interval_start_utc, interval_end_utc, region, market, non_spinning_reserves_procured_mw, non_spinning_reserves_self_provided_mw, non_spinning_reserves_total_mw, non_spinning_reserves_total_cost, regulation_down_procured_mw, regulation_down_self_provided_mw, regulation_down_total_mw, regulation_down_total_cost, regulation_mileage_down_procured_mw, regulation_mileage_down_self_provided_mw, regulation_mileage_down_total_mw, regulation_mileage_down_total_cost, regulation_mileage_up_procured_mw, regulation_mileage_up_self_provided_mw, regulation_mileage_up_total_mw, regulation_mileage_up_total_cost, regulation_up_procured_mw, regulation_up_self_provided_mw, regulation_up_total_mw, regulation_up_total_cost, spinning_reserves_procured_mw, spinning_reserves_self_provided_mw, spinning_reserves_total_mw, spinning_reserves_total_cost, TIMESTAMP, TIMESTAMP, VARCHAR, VARCHAR, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION
#> 5 publish_time_utc, outage_mrid, resource_name, resource_id, outage_type, nature_of_work, curtailment_start_time, curtailment_end_time, curtailment_mw, resource_pmax_mw, net_qualifying_capacity_mw, TIMESTAMP, INTEGER, VARCHAR, VARCHAR, VARCHAR, VARCHAR, TIMESTAMP, TIMESTAMP, DOUBLE PRECISION, DOUBLE PRECISION, DOUBLE PRECISION
#> 6 interval_start_utc, interval_end_utc, curtailment_type, curtailment_reason, fuel_type, curtailment_mwh, curtailment_mw, TIMESTAMP, TIMESTAMP, VARCHAR, VARCHAR, VARCHAR, INTEGER, INTEGER
#> number_of_rows_approximate
#> 1 530
#> 2 1190
#> 3 228666
#> 4 593101
#> 5 1896127
#> 6 64863
updates <- get_dataset_updates()
head(updates)
#> id dataset time_utc num_rows_updated
#> 1 1 pjm_lmp_real_time_5_min 2023-04-19T22:10:19+00:00 34
#> 2 2 miso_lmp_real_time_5_min 2023-04-19T22:10:41+00:00 345
#> 3 3 miso_load 2023-04-19T22:11:46+00:00 1
#> 4 4 miso_fuel_mix 2023-04-19T22:11:54+00:00 1
#> 5 5 caiso_fuel_mix 2023-04-19T22:11:55+00:00 4
#> 6 6 caiso_load 2023-04-19T22:11:56+00:00 1
df <- get_gridstatus_dataset("caiso_fuel_mix")
str(df)
#> 'data.frame': 1440 obs. of 15 variables:
#> $ interval_start_utc: POSIXct, format: "2024-05-09 00:00:00" "2024-05-09 00:05:00" ...
#> $ solar : int 15960 15809 15533 15182 14803 14472 14523 14404 14115 13792 ...
#> $ wind : int 2155 2170 2100 2115 2071 2050 2078 2097 2178 2237 ...
#> $ geothermal : int 765 767 767 767 766 766 767 767 766 766 ...
#> $ biomass : int 241 241 241 242 242 242 241 243 244 243 ...
#> $ biogas : int 153 154 154 154 155 155 155 155 155 155 ...
#> $ small_hydro : int 319 322 321 325 326 332 336 324 321 319 ...
#> $ coal : int 0 0 0 0 0 0 0 0 0 0 ...
#> $ nuclear : int 1143 1143 1144 1143 1143 1143 1143 1142 1142 1142 ...
#> $ natural_gas : int 3963 3981 4026 4091 4140 4143 4225 4290 4313 4353 ...
#> $ large_hydro : int 1613 1768 1774 1798 1819 2212 2267 2265 2263 2365 ...
#> $ batteries : int -771 -1033 -1142 -869 -683 -374 -284 -347 -81 129 ...
#> $ imports : int -3742 -3539 -3159 -2960 -2632 -2827 -2912 -2631 -2437 -2313 ...
#> $ other : int 0 0 0 0 0 0 0 0 0 0 ...
#> $ datetime_local : POSIXct, format: "2024-05-08 17:00:00" "2024-05-08 17:05:00" ...