我有一个数据框(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 值是以某种方式创建的。我不知道这是我的逻辑错误还是我忽略了一些语法问题。
我知道这不是解决问题的一种非常巧妙的方法,因此任何其他更简单或更好的逻辑将不胜感激。
提前致谢