julia> y = read_file(joinpath(SLIDE_DIR,"docs","src","assets","yaml","gsp_state.yml"));
julia> df = read_file([SLIDE_DIR; y["PathIn"]], y["CSVInput"]);

8×11 DataFrame
│ Row │ GeoFIPS │ GeoName        │ Region  │ TableName │ ComponentName                         │ Unit                        │ IndustryId │ IndustryClassification │ Description                                   │ 2016      │ 2017       │
│     │ Int64   │ String         │ Int64?  │ String    │ String                                │ String                      │ Int64      │ Union{Missing, String} │ String                                        │ Float64   │ String     │
├─────┼─────────┼────────────────┼─────────┼───────────┼───────────────────────────────────────┼─────────────────────────────┼────────────┼────────────────────────┼───────────────────────────────────────────────┼───────────┼────────────┤
│ 1   │ 0       │ United States* │ missing │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 1          │ missing                │ All industry total                            │ 1.87072e7 │ 19485394.0 │
│ 2   │ 0       │ United States* │ missing │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 2          │ missing                │  Private industries                           │ 1.63194e7 │ 17031689.7 │
│ 3   │ 0       │ United States* │ missing │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 3          │ 11                     │   Agriculture, forestry, fishing, and hunting │ 1.64913e5 │ 169225.2   │
│ 4   │ 0       │ United States* │ missing │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 4          │ 111-112                │    Farms                                      │ 129458.0  │ (NA)       │
│ 5   │ 24000   │ Maryland       │ 2       │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 1          │ missing                │ All industry total                            │ 3.84377e5 │ 399537.9   │
│ 6   │ 24000   │ Maryland       │ 2       │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 2          │ missing                │  Private industries                           │ 3.06028e5 │ 318703.6   │
│ 7   │ 24000   │ Maryland       │ 2       │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 3          │ 11                     │   Agriculture, forestry, fishing, and hunting │ 867.3     │ 914.1      │
│ 8   │ 24000   │ Maryland       │ 2       │ SAGDP2N   │ Gross domestic product (GDP) by state │ Millions of current dollars │ 4          │ 111-112                │    Farms                                      │ 730.8     │ (NA)       │

Deselect

julia> y["Deselect"]
Deselect([:Region, :TableName, :GeoFIPS, :ComponentName, :Description], "==")

julia> df = edit_with(df, y["Deselect"]);

8×6 DataFrame
│ Row │ GeoName        │ Unit                        │ IndustryId │ IndustryClassification │ 2016      │ 2017       │
│     │ String         │ String                      │ Int64      │ Union{Missing, String} │ Float64   │ String     │
├─────┼────────────────┼─────────────────────────────┼────────────┼────────────────────────┼───────────┼────────────┤
│ 1   │ United States* │ Millions of current dollars │ 1          │ missing                │ 1.87072e7 │ 19485394.0 │
│ 2   │ United States* │ Millions of current dollars │ 2          │ missing                │ 1.63194e7 │ 17031689.7 │
│ 3   │ United States* │ Millions of current dollars │ 3          │ 11                     │ 1.64913e5 │ 169225.2   │
│ 4   │ United States* │ Millions of current dollars │ 4          │ 111-112                │ 129458.0  │ (NA)       │
│ 5   │ Maryland       │ Millions of current dollars │ 1          │ missing                │ 3.84377e5 │ 399537.9   │
│ 6   │ Maryland       │ Millions of current dollars │ 2          │ missing                │ 3.06028e5 │ 318703.6   │
│ 7   │ Maryland       │ Millions of current dollars │ 3          │ 11                     │ 867.3     │ 914.1      │
│ 8   │ Maryland       │ Millions of current dollars │ 4          │ 111-112                │ 730.8     │ (NA)       │

Rename

julia> y["Rename"]
6-element Array{Rename,1}:
 Rename(:GeoName, :r)
 Rename(:ComponentName, :gdpcat)
 Rename(:IndustryId, :si)
 Rename(:Unit, :units)
 Rename(:IndustryClassification, :n)
 Rename(:Description, :desc)

julia> df = edit_with(df, y["Rename"]);

8×6 DataFrame
│ Row │ r              │ units                       │ si    │ n       │ 2016      │ 2017       │
│     │ String         │ String                      │ Int64 │ String? │ Float64   │ String     │
├─────┼────────────────┼─────────────────────────────┼───────┼─────────┼───────────┼────────────┤
│ 1   │ United States* │ Millions of current dollars │ 1     │ missing │ 1.87072e7 │ 19485394.0 │
│ 2   │ United States* │ Millions of current dollars │ 2     │ missing │ 1.63194e7 │ 17031689.7 │
│ 3   │ United States* │ Millions of current dollars │ 3     │ 11      │ 1.64913e5 │ 169225.2   │
│ 4   │ United States* │ Millions of current dollars │ 4     │ 111-112 │ 129458.0  │ (NA)       │
│ 5   │ Maryland       │ Millions of current dollars │ 1     │ missing │ 3.84377e5 │ 399537.9   │
│ 6   │ Maryland       │ Millions of current dollars │ 2     │ missing │ 3.06028e5 │ 318703.6   │
│ 7   │ Maryland       │ Millions of current dollars │ 3     │ 11      │ 867.3     │ 914.1      │
│ 8   │ Maryland       │ Millions of current dollars │ 4     │ 111-112 │ 730.8     │ (NA)       │

Match

julia> y["Match"]
Match(r"(?<r>.*)\*", :r, [:r])

julia> df = edit_with(df, y["Match"]);

8×6 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ 2016      │ 2017       │
│     │ String        │ String                      │ Int64 │ String? │ Float64   │ String     │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼───────────┼────────────┤
│ 1   │ United States │ Millions of current dollars │ 1     │ missing │ 1.87072e7 │ 19485394.0 │
│ 2   │ United States │ Millions of current dollars │ 2     │ missing │ 1.63194e7 │ 17031689.7 │
│ 3   │ United States │ Millions of current dollars │ 3     │ 11      │ 1.64913e5 │ 169225.2   │
│ 4   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 129458.0  │ (NA)       │
│ 5   │ Maryland      │ Millions of current dollars │ 1     │ missing │ 3.84377e5 │ 399537.9   │
│ 6   │ Maryland      │ Millions of current dollars │ 2     │ missing │ 3.06028e5 │ 318703.6   │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 867.3     │ 914.1      │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 730.8     │ (NA)       │

Melt

julia> y["Melt"]
Melt([:r, :si, :units, :n, :desc], :yr, :value)

julia> df = edit_with(df, y["Melt"]);

16×6 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ yr     │ value      │
│     │ String        │ String                      │ Int64 │ String? │ String │ Any        │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼────────┼────────────┤
│ 1   │ United States │ Millions of current dollars │ 1     │ missing │ 2016   │ 1.87072e7  │
│ 2   │ United States │ Millions of current dollars │ 2     │ missing │ 2016   │ 1.63194e7  │
│ 3   │ United States │ Millions of current dollars │ 3     │ 11      │ 2016   │ 1.64913e5  │
│ 4   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 129458.0   │
│ 5   │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2016   │ 3.84377e5  │
│ 6   │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2016   │ 3.06028e5  │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2016   │ 867.3      │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 730.8      │
│ 9   │ United States │ Millions of current dollars │ 1     │ missing │ 2017   │ 19485394.0 │
│ 10  │ United States │ Millions of current dollars │ 2     │ missing │ 2017   │ 17031689.7 │
│ 11  │ United States │ Millions of current dollars │ 3     │ 11      │ 2017   │ 169225.2   │
│ 12  │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ (NA)       │
│ 13  │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2017   │ 399537.9   │
│ 14  │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2017   │ 318703.6   │
│ 15  │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2017   │ 914.1      │
│ 16  │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ (NA)       │

Map

Standardize region names.

julia> y["Map"][1]
Map("parse/regions.csv", [:from], [:to], [:r], [:r], :left)

julia> df = edit_with(df, y["Map"][1]);
ERROR: ArgumentError: "data/coremaps/parse/regions.csv" is not a valid file

16×6 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ yr     │ value      │
│     │ String        │ String                      │ Int64 │ String? │ String │ Any        │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼────────┼────────────┤
│ 1   │ United States │ Millions of current dollars │ 1     │ missing │ 2016   │ 1.87072e7  │
│ 2   │ United States │ Millions of current dollars │ 2     │ missing │ 2016   │ 1.63194e7  │
│ 3   │ United States │ Millions of current dollars │ 3     │ 11      │ 2016   │ 1.64913e5  │
│ 4   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 129458.0   │
│ 5   │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2016   │ 3.84377e5  │
│ 6   │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2016   │ 3.06028e5  │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2016   │ 867.3      │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 730.8      │
│ 9   │ United States │ Millions of current dollars │ 1     │ missing │ 2017   │ 19485394.0 │
│ 10  │ United States │ Millions of current dollars │ 2     │ missing │ 2017   │ 17031689.7 │
│ 11  │ United States │ Millions of current dollars │ 3     │ 11      │ 2017   │ 169225.2   │
│ 12  │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ (NA)       │
│ 13  │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2017   │ 399537.9   │
│ 14  │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2017   │ 318703.6   │
│ 15  │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2017   │ 914.1      │
│ 16  │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ (NA)       │

Standardize unit names and set up for the conversion from millions to billions of us dollars (USD).

julia> y["Map"][2]
Map("parse/units.csv", [:from], [:to, :factor, :units_factor], [:units], [:units, :factor, :units_factor], :left)

julia> df = edit_with(df, y["Map"][2]);
ERROR: ArgumentError: "data/coremaps/parse/units.csv" is not a valid file

16×6 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ yr     │ value      │
│     │ String        │ String                      │ Int64 │ String? │ String │ Any        │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼────────┼────────────┤
│ 1   │ United States │ Millions of current dollars │ 1     │ missing │ 2016   │ 1.87072e7  │
│ 2   │ United States │ Millions of current dollars │ 2     │ missing │ 2016   │ 1.63194e7  │
│ 3   │ United States │ Millions of current dollars │ 3     │ 11      │ 2016   │ 1.64913e5  │
│ 4   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 129458.0   │
│ 5   │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2016   │ 3.84377e5  │
│ 6   │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2016   │ 3.06028e5  │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2016   │ 867.3      │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 730.8      │
│ 9   │ United States │ Millions of current dollars │ 1     │ missing │ 2017   │ 19485394.0 │
│ 10  │ United States │ Millions of current dollars │ 2     │ missing │ 2017   │ 17031689.7 │
│ 11  │ United States │ Millions of current dollars │ 3     │ 11      │ 2017   │ 169225.2   │
│ 12  │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ (NA)       │
│ 13  │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2017   │ 399537.9   │
│ 14  │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2017   │ 318703.6   │
│ 15  │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2017   │ 914.1      │
│ 16  │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ (NA)       │

Replace

julia> y["Replace"]
6-element Array{Replace,1}:
 Replace(:value, missing, 0)
 Replace(:value, "(NA)", 0)
 Replace(:value, "(D)", 0)
 Replace(:value, "(H)", 0)
 Replace(:value, "(L)", 0)
 Replace(:value, "(T)", 0)

julia> df = edit_with(df, y["Replace"]);

16×6 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ yr     │ value      │
│     │ String        │ String                      │ Int64 │ String? │ String │ Any        │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼────────┼────────────┤
│ 1   │ United States │ Millions of current dollars │ 1     │ missing │ 2016   │ 1.87072e7  │
│ 2   │ United States │ Millions of current dollars │ 2     │ missing │ 2016   │ 1.63194e7  │
│ 3   │ United States │ Millions of current dollars │ 3     │ 11      │ 2016   │ 1.64913e5  │
│ 4   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 129458.0   │
│ 5   │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2016   │ 3.84377e5  │
│ 6   │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2016   │ 3.06028e5  │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2016   │ 867.3      │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 730.8      │
│ 9   │ United States │ Millions of current dollars │ 1     │ missing │ 2017   │ 19485394.0 │
│ 10  │ United States │ Millions of current dollars │ 2     │ missing │ 2017   │ 17031689.7 │
│ 11  │ United States │ Millions of current dollars │ 3     │ 11      │ 2017   │ 169225.2   │
│ 12  │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0          │
│ 13  │ Maryland      │ Millions of current dollars │ 1     │ missing │ 2017   │ 399537.9   │
│ 14  │ Maryland      │ Millions of current dollars │ 2     │ missing │ 2017   │ 318703.6   │
│ 15  │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2017   │ 914.1      │
│ 16  │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0          │

Drop

julia> y["Drop"]
Drop(:n, missing, "==")

julia> df = edit_with(df, y["Drop"]);

8×6 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ yr     │ value     │
│     │ String        │ String                      │ Int64 │ String  │ String │ Any       │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼────────┼───────────┤
│ 1   │ United States │ Millions of current dollars │ 3     │ 11      │ 2016   │ 1.64913e5 │
│ 2   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 129458.0  │
│ 3   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2016   │ 867.3     │
│ 4   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 730.8     │
│ 5   │ United States │ Millions of current dollars │ 3     │ 11      │ 2017   │ 169225.2  │
│ 6   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0         │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2017   │ 914.1     │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0         │

Operate

julia> y["Operate"]
Operate("*", [:units], [:units_factor], [:value, :factor], :value)

julia> df = edit_with(df, y["Operate"]);
ERROR: ArgumentError: column name :factor not found in the data frame

8×6 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ yr     │ value     │
│     │ String        │ String                      │ Int64 │ String  │ String │ Any       │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼────────┼───────────┤
│ 1   │ United States │ Millions of current dollars │ 3     │ 11      │ 2016   │ 1.64913e5 │
│ 2   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 129458.0  │
│ 3   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2016   │ 867.3     │
│ 4   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 730.8     │
│ 5   │ United States │ Millions of current dollars │ 3     │ 11      │ 2017   │ 169225.2  │
│ 6   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0         │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2017   │ 914.1     │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0         │

Describe

julia> y["Describe"]
Describe(:gdpcat)

julia> df = edit_with(df, y["Describe"], y["CSVInput"]);

8×7 DataFrame
│ Row │ r             │ units                       │ si    │ n       │ yr     │ value     │ gdpcat │
│     │ String        │ String                      │ Int64 │ String  │ String │ Any       │ String │
├─────┼───────────────┼─────────────────────────────┼───────┼─────────┼────────┼───────────┼────────┤
│ 1   │ United States │ Millions of current dollars │ 3     │ 11      │ 2016   │ 1.64913e5 │ gdp    │
│ 2   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 129458.0  │ gdp    │
│ 3   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2016   │ 867.3     │ gdp    │
│ 4   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2016   │ 730.8     │ gdp    │
│ 5   │ United States │ Millions of current dollars │ 3     │ 11      │ 2017   │ 169225.2  │ gdp    │
│ 6   │ United States │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0         │ gdp    │
│ 7   │ Maryland      │ Millions of current dollars │ 3     │ 11      │ 2017   │ 914.1     │ gdp    │
│ 8   │ Maryland      │ Millions of current dollars │ 4     │ 111-112 │ 2017   │ 0         │ gdp    │

Order

julia> y["Order"]
Order([:yr, :r, :gdpcat, :si, :n, :units, :value], DataType[Int64, String, String, String, String, String, Float64])

julia> df = edit_with(df, y["Order"]);

8×7 DataFrame
│ Row │ yr    │ r             │ gdpcat │ si     │ n       │ units                       │ value     │
│     │ Int64 │ String        │ String │ String │ String  │ String                      │ Float64   │
├─────┼───────┼───────────────┼────────┼────────┼─────────┼─────────────────────────────┼───────────┤
│ 1   │ 2016  │ United States │ gdp    │ 3      │ 11      │ Millions of current dollars │ 1.64913e5 │
│ 2   │ 2016  │ United States │ gdp    │ 4      │ 111-112 │ Millions of current dollars │ 129458.0  │
│ 3   │ 2016  │ Maryland      │ gdp    │ 3      │ 11      │ Millions of current dollars │ 867.3     │
│ 4   │ 2016  │ Maryland      │ gdp    │ 4      │ 111-112 │ Millions of current dollars │ 730.8     │
│ 5   │ 2017  │ United States │ gdp    │ 3      │ 11      │ Millions of current dollars │ 1.69225e5 │
│ 6   │ 2017  │ United States │ gdp    │ 4      │ 111-112 │ Millions of current dollars │ 0.0       │
│ 7   │ 2017  │ Maryland      │ gdp    │ 3      │ 11      │ Millions of current dollars │ 914.1     │
│ 8   │ 2017  │ Maryland      │ gdp    │ 4      │ 111-112 │ Millions of current dollars │ 0.0       │