R 将时间序列(日期序列)子集到列表中
我有一个带有一系列日期的数据框,下面是它的简化版本:R 将时间序列(日期序列)子集到列表中,r,list,dplyr,R,List,Dplyr,我有一个带有一系列日期的数据框,下面是它的简化版本: > eventdates dr.rank dr.start dr.end 1 14 1964-09-30 1964-10-06 2 16 1964-11-01 1964-12-24 我还有一个带有值的日期时间序列。与之相关的是,这里有一个非常简化的时间序列版本: ts1964 <- data.frame(DATE = seq(from = as.Date("1964-01-01"), to =
> eventdates
dr.rank dr.start dr.end
1 14 1964-09-30 1964-10-06
2 16 1964-11-01 1964-12-24
我还有一个带有值的日期时间序列。与之相关的是,这里有一个非常简化的时间序列版本:
ts1964 <- data.frame(DATE = seq(from = as.Date("1964-01-01"), to = as.Date("1964-12-31"), by = "days"),
Q = 1:366)
ts1964过滤器(ts1964,ts1964$DATE>=eventdates[1,2]&ts1964$DATE
但我需要这样做数百次。我想做的是让每个子集在列表中形成一个元素。我通常会考虑在
plyr
中使用类似dlply
的东西,但当我使用dplyr
时,这不是一个选项。有人能建议我如何实现这一点吗?谢谢大家使用Map
Map(function(x,y) filter(ts1964, DATE >= x & DATE <= y),
eventdates$dr.start, eventdates$dr.end)
Map(函数(x,y)过滤器(ts1964,DATE>=x&DATE我们可以使用Map
Map(function(x,y) filter(ts1964, DATE >= x & DATE <= y),
eventdates$dr.start, eventdates$dr.end)
Map(function(x,y)filter(ts1964,DATE>=x&DATE)你的例子不应该是filter(ts1964,ts1964$DATE>=eventdates[1,1]&ts1964$DATE good catch@Abdou,它应该是[1,2],然后是[1,3]。我会修改:)你的例子不应该是filter(ts1964,ts1964$DATE>=eventdates[1,1]&ts1964$DATE good catch@Abdou,它应该是[1,2]然后[1,3]。我将修改:)谢谢,那太好了!只是想了解一下它是如何工作的。它本质上是使用apply
?(嗯,mapply
…)的形式吗?它在某种程度上相当于lappy(split(eventdates,seq(nrow(eventdates))),函数(x){dplyr::filter(ts1964,DATE>=x$dr.start&DATE谢谢,太好了!只是想了解一下它是如何工作的。它本质上是使用了一种apply
?(好吧,mapply
…)的形式,它在某种程度上相当于lappy(split(eventdates,seq(nrow(eventdates))),函数(x){dplyr::filter(ts1964,DATE>=x$dr.start&DATE)