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