# Example: Save Data as CSV

#### Jonathan Callahan

#### 2020-02-12

> How can I save data from temporary monitors to a CSV file?

If you have PWFSLSmoke installed, you should be able to copy and paste this code into the RStudio console.

The coding style uses the “pipe” operator, `%>%`, which uses the output of the preceding function as the first argument of the next function. Package functions are specifically designed to work well in this manner, encouraging readable and understandable code.

Think of each chunk as a recipe that begins with what you want to make and is followed by the steps needed to make it.

Enjoy!

    library(PWFSLSmoke)

    # All of AIRSIS for 2019
    airsis <- airsis_loadAnnual(2019)

    # AIRSIS in California
    #  - start with airsis
    #  - subset for those where stateCode is one of "CA"
    airsis_ca <-
      airsis %>%
      monitor_subset(stateCodes = ("CA"))

    # Show the siteNames and IDs
    #  - start with airsis_ca
    #  - extract the "meta" dataframe
    #  - select the "siteName column
    #  - (print by default)
    airsis_ca %>%
      monitor_extractMeta() %>%
      dplyr::select(siteName)

    # Interactive map to pick a monitor
    monitor_leaflet(airsis_ca)

    # Select a single monitor by monitorID
    #  - start with airsis_ca
    #  - subset for the "Mariposa-5085 Bullion St" monitorID
    Mariposa <-
      airsis_ca %>%
      monitor_subset(monitorIDs = "lon_.119.968_lat_37.488_mariposa.1000")

    # Interactive graph to pick some time limits
    monitor_dygraph(Mariposa)

    # Trim this time series to October through December
    #  - start with Mariposa
    #  - subset based on time limits
    Mariposa <-
      Mariposa %>%
      monitor_subset(tlim = c(20191001, 20200101))

    # A quick plot for October through December
    monitor_timeseriesPlot(Mariposa)
    addAQILines()
    addAQIStackedBar()
    addAQILegend("topright")
    title("Mariposa 2019")

    # Dump out a meta/data combined CSV file for Mariposa
    monitor_writeCSV(
      Mariposa,
      saveFile = file.path(tempdir(), "Mariposa.csv"),
      metaOnly = FALSE,
      dataOnly = FALSE,
      quietly = TRUE
    )

    # Alternatively, View the metadata and data in RStudio:
    View(Mariposa$meta)
    View(Mariposa$data)

    # Trim the all-California dataset to the period that has data
    airsis_ca <- monitor_trim(airsis_ca)

    # Dump out airsis_ca metadata to a CSV file
    monitor_writeCSV(
      airsis_ca,
      saveFile = file.path(tempdir(), "airsis_CA_meta.csv"),
      metaOnly = TRUE,
      dataOnly = FALSE,
      quietly = TRUE
    )

    # Dump out airsis_ca data to a CSV file
    monitor_writeCSV(
      airsis_ca,
      saveFile = file.path(tempdir(), "airsis_CA_data.csv"),
      metaOnly = FALSE,
      dataOnly = TRUE,
      quietly = TRUE
    )

    # Alternatively, View() the metadata and data in RStudio:
    View(airsis_ca$meta)
    View(airsis_ca$data)

    # ==============================================================================

    # Everything above also applies to temporary data from the Western Regional
    # Climate Center. Just start with:

    # All of WRCC for 2019
    wrcc <- wrcc_loadAnnual(2019)

Finally, to emphasize what can be done with pipelines, the following calculates NowCast timeseries for all of California and displays the `data` dataframe in the RStudio viewer:

    airsis_loadAnnual(2019) %>%
      monitor_subset(stateCodes = c("CA")) %>%
      monitor_subset(tlim = c(20191001, 20200101)) %>%
      monitor_trim() %>%
      monitor_nowcast(includeShortTerm = TRUE) %>%
      monitor_extractData() %>%
      View()