Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将时间序列(日期序列)子集到列表中_R_List_Dplyr - Fatal编程技术网

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)