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 │