代码之家  ›  专栏  ›  技术社区  ›  George carrick

如何在R中检测时间序列数据中的缺失年份?

  •  1
  • George carrick  · 技术社区  · 2 年前

    假设我们有以下年份的专栏:

    2012, 2013, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022
    

    现在我需要一个代码来识别缺失的年份(本例中为2016年)

    4 回复  |  直到 2 年前
        1
  •  1
  •   Darren Tsai    2 年前

    你可以用 setdiff() .

    setdiff(seq(min(x), max(x)), x)
    # [1] 2016
    
    数据
    x <- c(2012,2013,2014,2015,2017,2018,2019,2020,2021,2022)
    

    使现代化

    根据附加请求,代码可以扩展为

    yr <- setdiff(seq(min(x), max(x)), x)
    if( !length(yr) ) yr <- "no year is missing"
    

    注: 如果 yr 长度为0, !length(yr) 威尔得到 TRUE .

        2
  •  0
  •   bpvalderrama    2 年前

    你只需要知道少了哪一年吗?

    如果是这样,您可以尝试:

    all_years <- seq(2012, 2022, 1)
    years_in_column <- c(2012,2013,2014,2015,2017,2018,2019,2020,2021,2022)
    
    all_years[!all_years %in% years_in_column]
    
        3
  •  0
  •   VvdL    2 年前

    setdiff :

    years <- c(2012,2013,2014,2015,2017,2018,2019,2020,2021,2022)
    all_years <- seq(min(years), max(years))
    setdiff(all_years, years)
    #> [1] 2016
    
        4
  •  0
  •   Clemsang    2 年前

    你可以进来 base R:

    df <- data.frame(year = c(2012,2013,2014,2015,2017,2018,2019,2020,2021,2022))
    all_years <- seq(min(df$year), max(df$year))
    result <- all_years[!all_years %in% df$year]
    result
    [1] 2016
    
    if(lenth(result) == 0) result <- "no year is missing"