Selected US unemployment series.

[?]
Apr 26, 2021, 3:29 AM
AT753JPOOWZCIYNKAG27LZSZZ72ZILWVENG42Y6U2S34JD3B6ZZQC

Dependencies

  • [2] CUADTSHQ Save csv data as multiple files.
  • [3] GUXZCEWW Added Country enum.
  • [4] 5POF332L Working on fn cpi_included().
  • [5] 4MG5JFXT First record.
  • [6] LURDUHBI Finished series filter for CPI.
  • [7] IKPVWWLK Filter unemployment rate series.

Change contents

  • edit in src/main.rs at line 1
    [3.10]
    [3.0]
    use fred_api::Fred;
  • edit in src/main.rs at line 4
    [3.1][3.1:14]()
    use std::fs;
  • edit in src/main.rs at line 6
    [3.59][2.0:25]()
    countries_with_data,
  • replacement in src/main.rs at line 7
    [3.26][2.26:87]()
    save_data_csv,
    save_data_json,
    save_series_meta,
    [3.26]
    [2.87]
    countries_with_data,
  • edit in src/main.rs at line 9
    [2.115][2.115:126]()
    title,
  • edit in src/main.rs at line 12
    [3.110][3.67:87]()
    use fred_api::Fred;
  • replacement in src/main.rs at line 22
    [3.365][3.365:617]()
    // for i in 0..=6 {
    // println!("{}\n{}", i, Fred::category(i));
    // }
    // for i in 9..=13 {
    // println!("{}\n{}", i, Fred::category(i));
    // }
    // for i in 15..=18 {
    // println!("{}\n{}", i, Fred::category(i));
    [3.365]
    [3.617]
    // save_unemployment_data(&Country::SouthKorea);
    // for country in countries_with_data().iter() {
    // println!("\n{}", country.to_string());
    // save_unemployment_data(&country);
  • replacement in src/main.rs at line 28
    [3.626][3.626:705]()
    // for i in 21..=24 {
    // println!("{}\n{}", i, Fred::category(i));
    [3.626]
    [3.705]
    // save_data_csv("LRHUTTTTNZA156N");
    // println!("{}", to_tag("unemployment", &Country::UnitedStates));
    // println!("{}", to_tag("unemployment", &Country::UnitedStates));
    // println!("{}", unemployment_series(&Country::NewZealand));
    // println!("{}", Fred::series_tags("NZLURHARMQDSMEI").unwrap().one_line());
    // Category attack
    // for i in 0..1000 {
    // match Fred::category(i) {
    // Ok(category) => println!("{}\n{}", i, category),
    // Err(json_err) => {},
    // }
  • edit in src/main.rs at line 47
    [3.714][3.714:906]()
    // for i in 25..=26 {
    // println!("{}\n{}", i, Fred::category(i));
    // }
    // for i in 28..=31 {
    // println!("{}\n{}", i, Fred::category(i));
    // }
    // Up to 38
  • replacement in src/main.rs at line 48
    [3.907][3.907:986]()
    // Consumer Price Indices
    // println!("{}", Fred::category_series(9));
    [3.907]
    [3.986]
    // let seriess = unemployment_series(&Country::NewZealand);
  • replacement in src/main.rs at line 50
    [3.987][3.987:1046]()
    // Use this to get related tags
    // JPNCPIALLMINMEI
    [3.987]
    [3.1046]
    // for series in seriess.iter() {
    // println!("{}", series.id);
    // }
  • replacement in src/main.rs at line 54
    [3.1047][3.1047:1108]()
    // println!("{}", Fred::series_tags("JPNCPIALLMINMEI"));
    [3.1047]
    [3.1108]
    // let tag_seriess = Fred::tags_series("unemployment;rate;usa;nation").unwrap().seriess;
  • replacement in src/main.rs at line 56
    [3.1109][3.1109:1143]()
    // "price index"
    // "cpi"
    [3.1109]
    [2.223]
    // for tag_series in tag_seriess.iter() {
    // println!("{}", tag_series);
    // }
  • replacement in src/main.rs at line 60
    [2.224][2.224:275]()
    // println!("{}", Fred::tags_series("korea"));
    [2.224]
    [2.275]
    // println!("{:?}", Fred::category_series(10).unwrap())
  • edit in src/main.rs at line 62
    [2.276][2.276:329]()
    println!("{}", cpi_series(Country::SouthKorea));
  • replacement in src/main.rs at line 63
    [3.1144][2.330:383]()
    // save_unemployment_data(&Country::SouthKorea);
    [3.1144]
    [2.383]
    // let series = Fred::series("LRHU24TTUSA156N").unwrap();
  • replacement in src/main.rs at line 65
    [2.384][2.384:532]()
    // for country in countries_with_data().iter() {
    // println!("\n{}", country.to_string());
    // save_unemployment_data(&country);
    [2.384]
    [2.532]
    // match Fred::series_tags("LRHU24TTUSA156N") {
    // Ok(series_tags) => println!("{}", series_tags),
    // Err(json_err) => println!("{}", json_err),
  • replacement in src/main.rs at line 70
    [2.542][2.542:591]()
    // println!("{}", title("LFACTTTTKRA657N"));
    [2.542]
    [3.1208]
    // Relevant tags
  • replacement in src/main.rs at line 72
    [3.1209][2.592:633]()
    // save_data_csv("LRHUTTTTNZA156N");
    [3.1209]
    [3.83]
    // unemployment, rate, nation, usa
  • replacement in src/main.rs at line 74
    [3.84][2.634:703]()
    // println!("{}", to_tag("unemployment", &Country::SouthKorea));
    [3.84]
    [3.1260]
    println!("{}", unemployment_series(&Country::UnitedStates));
  • replacement in src/main.rs at line 76
    [3.1261][2.704:797]()
    // println!("{}", Fred::tags_series(&to_tag("cpi", &Country::SouthKorea)).seriess);
    [3.1261]
    [3.292]
  • edit in src/main.rs at line 78
    [3.294]
    // Do searches by looking at titles
  • replacement in src/lib.rs at line 19
    [2.981][2.981:1039]()
    let data = Fred::series_observations_json(series_id);
    [2.981]
    [2.1039]
    let data = match Fred::series_observations_json(series_id) {
    Ok(data) => data,
    Err(err) => {
    println!("{}", err);
    panic!();
    },
    };
  • edit in src/lib.rs at line 56
    [2.1754]
    [2.1754]
    let observations = match Fred::series_observations(series_id) {
    Ok(series_obs) => series_obs.observations,
    Err(err) => {
    println!("{}", err);
    panic! ();
    },
    };
  • replacement in src/lib.rs at line 64
    [2.1755][2.1755:1829]()
    for obs in Fred::series_observations(series_id).observations.iter() {
    [2.1755]
    [2.1829]
    for obs in observations.iter() {
  • replacement in src/lib.rs at line 116
    [2.3198][2.3198:3250]()
    let data = Fred::series(series_id).to_string();
    [2.3198]
    [2.3250]
    let data = match Fred::series(series_id) {
    Ok(series) => series.to_string(),
    Err(err) => {
    println!("{}", err);
    panic!();
    },
    };
  • edit in src/lib.rs at line 460
    [3.17876][3.17876:17886](),[3.17886][3.14131:14160](),[3.14131][3.14131:14160](),[3.14160][3.372:392](),[3.392][3.17887:17909](),[3.14160][3.17887:17909](),[3.17909][3.14225:14266](),[3.14225][3.14225:14266]()
    }
    Country::Taiwan => {
    // TODO
    panic!();
    // Two old data series only.
  • replacement in src/lib.rs at line 486
    [3.19240][2.3796:3852](),[2.3852][3.469:500](),[3.469][3.469:500](),[3.500][3.19323:19344](),[3.19323][3.19323:19344]()
    Fred::tags_series(&to_tag("cpi", &country)).seriess
    .equals_one_of(titles)
    .to_string()
    [3.19240]
    [3.110]
    match Fred::tags_series(&to_tag("cpi", &country)) {
    Ok(tags_series) => {
    tags_series.seriess
    .equals_one_of(titles)
    .to_string()
    },
    Err(json_error) => {
    println!("{}", json_error);
    panic!();
    },
    }
  • replacement in src/lib.rs at line 501
    [3.569][3.569:627]()
    /// println!("{}", unemployment_series(Country::Canada));
    [3.569]
    [3.627]
    /// println!("{}", unemployment_series(&Country::Canada));
  • replacement in src/lib.rs at line 504
    [2.3916][2.3916:3966](),[2.3966][3.692:9799](),[3.692][3.692:9799](),[3.9799][2.3967:4351](),[2.4351][3.9799:11856](),[3.9799][3.9799:11856](),[3.11856][2.4352:4433]()
    dbg!(country);
    dbg!(country.to_string());
    let (exclude_phrase, include_phrase) = match country {
    Country::Australia => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Austria => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "15-64", // series includes 15-74
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Belgium => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "15-64", // series includes 15-74
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Canada => {
    (
    vec!(
    "Male",
    "Female",
    "15-64",
    "55-64",
    "25-54",
    "15-24",
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Chile => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::CzechRepublic => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Denmark => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Estonia => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Finland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::France => {
    (
    vec!(
    "Male",
    "Men",
    "Female",
    "Women",
    "Youth",
    "Teenagers",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Germany => {
    (
    vec!(
    "Male",
    "Men",
    "Female",
    "Youth",
    "Women",
    "Teenagers",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Greece => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Ireland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Israel => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Italy => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Japan => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Latvia => {
    (
    vec!(
    "Youth",
    "Male",
    "Female",
    "25 and over",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "nemployment",
    ),
    )
    }
    Country::Netherlands => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Women",
    "Teenagers",
    "Men",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::NewZealand => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "Youth",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Norway => {
    (
    vec!(
    "Male",
    "Female",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Poland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Serbia => {
    (
    vec!(
    ),
    vec!(
    "",
    ),
    )
    }
    Country::SouthKorea => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Spain => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Sweden => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    "20 to 24",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Switzerland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::UnitedKingdom => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::UnitedStates => {
    (
    vec!(
    "Male",
    "Female",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    country => {
    println!("{:?}", country);
    panic!()
    [2.3916]
    [2.4433]
    if let Country::UnitedStates = country {
    // Need to use a different search technique for US data.
    let exclude_phrase = vec!(
    "Male",
    "Female",
    "Men",
    "Women",
    "Youth",
    );
    let one_of = vec!(
    "Unemployment Rate for United States",
    "Unemployment Rate: Aged 15 and Over: All Persons for the United States",
    "Unemployment Rate: Aged 15-74: All Persons for the United States",
    "Harmonized Unemployment Rate: Total: All Persons for the United States",
    "Unemployment Rate - 18 Years and Over",
    );
    let tag_series = Fred::tags_series("unemployment;rate;usa;nation").unwrap().seriess;
    tag_series
    .exclude_phrases(exclude_phrase)
    .equals_one_of(one_of)
    } else {
    let (exclude_phrase, include_phrase) = match country {
    Country::Australia => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Austria => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "15-64", // series includes 15-74
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Belgium => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "15-64", // series includes 15-74
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Canada => {
    (
    vec!(
    "Male",
    "Female",
    "15-64",
    "55-64",
    "25-54",
    "15-24",
    "20 to 24",
    "Youth",
    "Women",
    "Teenagers",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Chile => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::CzechRepublic => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Denmark => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate"
    ),
    )
    }
    Country::Estonia => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Finland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::France => {
    (
    vec!(
    "Male",
    "Men",
    "Female",
    "Women",
    "Youth",
    "Teenagers",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Germany => {
    (
    vec!(
    "Male",
    "Men",
    "Female",
    "Youth",
    "Women",
    "Teenagers",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Greece => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Ireland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Israel => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Italy => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Japan => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Latvia => {
    (
    vec!(
    "Youth",
    "Male",
    "Female",
    "25 and over",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "nemployment",
    ),
    )
    }
    Country::Netherlands => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Women",
    "Teenagers",
    "Men",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::NewZealand => {
    (
    vec!(
    "Male",
    "Female",
    "55-64",
    "25-54",
    "15-24",
    "Youth",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Norway => {
    (
    vec!(
    "Male",
    "Female",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Poland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Serbia => {
    (
    vec!(
    ),
    vec!(
    "",
    ),
    )
    }
    Country::SouthKorea => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Spain => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Sweden => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    "20 to 24",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::Switzerland => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    Country::UnitedKingdom => {
    (
    vec!(
    "Male",
    "Female",
    "Youth",
    "Men",
    "Women",
    "Teenagers",
    "20 to 24",
    "15-24",
    "15-64",
    "25-54",
    "55-64",
    ),
    vec!(
    "Rate",
    ),
    )
    }
    _ => panic!(),
    };
    match Fred::tags_series(&to_tag("unemployment", country)) {
    Ok(tags_series) => {
    tags_series.seriess
    .exclude_phrases(exclude_phrase)
    .only_include(include_phrase)
    },
    Err(err) => {
    println!("{}", err);
    panic!();
    },
  • replacement in src/lib.rs at line 1004
    [2.4443][3.11879:11886](),[3.11879][3.11879:11886](),[3.11886][2.4444:4509](),[2.4509][3.11950:12029](),[3.11950][3.11950:12029]()
    };
    Fred::tags_series(&to_tag("unemployment", &country)).seriess
    .exclude_phrases(exclude_phrase)
    .only_include(include_phrase)
    [2.4443]
    [3.12050]
    }
  • edit in src/lib.rs at line 1061
    [3.12861][3.12861:12886]()
    Country::Taiwan,
  • edit in src/lib.rs at line 1066
    [2.5199]
    [2.5199]
    /// ```
    /// println!("{}", title("LFACTTTTKRA657N"));
    /// ```
  • replacement in src/lib.rs at line 1071
    [2.5272][2.5272:5331]()
    for series in Fred::series(series_id).seriess.iter() {
    [2.5272]
    [2.5331]
    let seriess = match Fred::series(series_id) {
    Ok(series) => series.seriess,
    Err(err) => {
    println!("{}", err);
    panic!();
    },
    };
    for series in seriess.iter() {