代码之家  ›  专栏  ›  技术社区  ›  Sweepy Dodo

R不识别循环中的日期

  •  0
  • Sweepy Dodo  · 技术社区  · 7 年前

    我希望循环一个日期向量,使用这些日期作为子集标准并进行计算。为了简单起见,我们假设这些计算是行数。

    问题是R将日期向量视为5位数字。这是尽管被强迫作为日期使用 as.Date 因此,loop创建一个长度为17896的列表。在我的循环列表中只有12个日期。

    我非常期待任何建议。非常感谢。

    # first date of each month in 2018
    dates_2018 = seq(as.Date("2018-1-1"), as.Date("2018-12-31"), "days")
    loop_date = as.Date(as.vector(tapply(dates_2018, substr(dates_2018, 1, 7), max), mode="any"), origin = "1970-01-01")
    
    # dummy df
    df = data.frame(id = 1:length(dates_2018)
                    ,dates_2018)
    
    # count number of days satisfy criteria
    y = list()
    for (i in loop_date)
    {
      y[[i]] = nrow(df[df$dates_2018 >= i, ])
    }; y
    
    0 回复  |  直到 7 年前
        1
  •  1
  •   A. Suliman    7 年前

    你能行 y[[i]] = nrow(df[df$dates_2018 >= as.Date(i,origin = "1970-01-01"), ]) 然后通过 y[[17562]] ,但你会在一个包含17896个元素的列表中找到你的结果。这里更合适

    for (i in seq_along(loop_date))
    {
      y[[i]] = nrow(df[df$dates_2018 >= loop_date[i], ])
    }