R无法识别循环中的日期

时间:2019-02-15 12:58:05

标签: r loops

我正在寻找一个循环的日期向量,将这些日期用作子集标准并进行计算。为简单起见,我们将假定这些计算是对行的计数。

问题是R将日期向量视为5位数字。尽管已使用as.Date将其强制为日期,但是循环会创建长度为17,896的列表。在我的循环列表中,只有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

1 个答案:

答案 0 :(得分:1)

您可以执行y[[i]] = nrow(df[df$dates_2018 >= as.Date(i,origin = "1970-01-01"), ])并得到y[[17562]]的结果,但是您会在包含17,896个要素的列表中找到结果。这是更合适的

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