我正在寻找一个循环的日期向量,将这些日期用作子集标准并进行计算。为简单起见,我们将假定这些计算是对行的计数。
问题是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
答案 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], ])
}