R中的日历(再次)操作

R中的日历(再次)操作,r,R,我有这样的代码: today<-as.Date(Sys.Date()) spec<-as.Date(today-c(1:1000)) df<-data.frame(spec) stage.dates<-as.Date(c('2015-05-31','2015-06-07','2015-07-01','2015-08-23','2015-09-15','2015-10-15','2015-11-03')) stage.vals<-c(1:8) stagedf<-

我有这样的代码:

today<-as.Date(Sys.Date())
spec<-as.Date(today-c(1:1000))
df<-data.frame(spec)
stage.dates<-as.Date(c('2015-05-31','2015-06-07','2015-07-01','2015-08-23','2015-09-15','2015-10-15','2015-11-03'))
stage.vals<-c(1:8)
stagedf<-data.frame(stage.dates,stage.vals)
df['IsMonthInStage']<-ifelse(format(df$spec,'%m')==(format(stagedf$stage.dates,'%m')),stagedf$stage.vals,0)
它似乎在循环,所以stage.dates有8个长,并且每8个重复“真实”匹配。如何修复此问题,使其在整个月内标记1,表示它处于阶段VAL中

或者对于奖金声誉-我如何设置它,以便在不同的stage.date之间,它将填充最近阶段的1、2、3等

例如:

5月31日至6月7日将有人居住1,6月7日至7月1日将有人居住2,以此类推,11月3日至5月30日将有人居住8

谢谢

编辑:

我理解后者在功能上与前者不同。我最终试图达到这两个目标(出于不同的原因),所以所有的答案都很好

看看这是否有效

根据<代码>阶段剪切和拆分数据。日期<代码>将它们视为桶。顺便说一句,这里不需要stage.vals

切割和拆分

data<-split(df, cut(df$spec, stagedf$stage.dates, include.lowest=TRUE))
arrange(data,spec)
现在使用ldply将数据帧加入列表

加入

data=ldply(data)
不过,这将给出您可以安排的发货或订购日期

排序

data<-split(df, cut(df$spec, stagedf$stage.dates, include.lowest=TRUE))
arrange(data,spec)
最终产量

data[1:10,]
         spec IsMonthInStage
1  2015-05-31              1
2  2015-06-01              1
3  2015-06-02              1
4  2015-06-03              1
5  2015-06-04              1
6  2015-06-05              1
7  2015-06-06              1
8  2015-06-07              2
9  2015-06-08              2
10 2015-06-09              2

我已经通过使用这个部分解决了这个问题:但是它还不是一个完整的解决方案:)。我可以用它来填充直到阶段改变的月份,但我还不知道如何防止问题前半部分提到的重复问题。