0

我有一个数据框(df),其中包含事件的到达和结束日期,格式为:

ID       ArrivalDate    ClosedDate       

1          2015-12-01     2015-12-08
2          2015-12-01     2015-12-18
3          2015-12-02     2015-12-11 
4          2015-12-02     2015-12-03 
.             .              .           
.             .              .           
300        2016-05-03      2016-05-13  

我想知道从 2015 年 12 月 1 日到 2016 年 5 月 31 日每周有多少活动(已到达但未关闭)。IE。输出应该看起来像这样(这不是正确的输出值,只是它应该看起来的样子)。

周数 开始日期 结束日期 活动

1          2015-12-01   2015-12-08      4
2          2015-12-08   2015-12-15      15
3          2015-12-15   2015-12-22      20
.             .              .           .
.             .              .           .
26         2016-05-24  2016-05-31        3

我使用两个 for 循环将 df 中的每个元素与每周的开始日期和结束日期进行比较。另外,我使用了一个数据框(周),它已经有周数、每周的开始和结束日期以及活动的数字(一开始全为零)

这是我使用的代码:

for(i in 1:nrow(df)){
    for(j in 1:nrow(Week)){
        if(df$ArrivalDate[i]>=Week$StartDate[j]&df$ArrivalDate[i]<Week$EndDate[j])                 
            Week$Active[j]<-Week$Active[j]+1

        if(df$ClosedDate[i]>=Week$EndDate[j]){
            k<-j+1    
                repeat{      
                Week$Active[k]<-Week$Active[k]+1
                if(df$ClosedDate[i]>=Week$EndDate[k])break
                k<-k+1
                }
        }     

        if(df$ClosedDate[i]<Week$EndDate[j])break            
    }
 } 

如果像“参数长度为零”或“需要 TRUE/FALSE 的缺失值”这样的语句,我不断收到错误,这让我相信 NA 值是以某种方式创建的。我不知道这是我的逻辑错误还是我忽略了一些语法问题。

我知道这不是解决问题的一种非常巧妙的方法,因此任何其他更简单或更好的逻辑将不胜感激。

提前致谢


4

0 回答 0