使用它来分配日期

时间:2016-01-21 17:30:57

标签: r

我在R中有一个时间序列的期货合约值,称为vxdata。在值从数字移动到“NA”的日期,我想创建一个列,将该日期列为该特定合同的到期日期。我尝试了以下公式:

vxdata$expiration = vxdata$Dates[which(vxdata$value==NA & lag(vxdata$value)>0]

我收到以下错误:

  

'$< - .data.frame'(' tmp ',“过期”,值=数字(0))出错:

     替换有0行,数据有452200

有关更好/更正执行此方法的建议吗?

1 个答案:

答案 0 :(得分:0)

使用is.na()而不是==。这是快速演示。

mydate <- as.Date(c('20110101','20110201','20110301',NA,NA,'NA','20110107'),format="%Y%m%d")
expiration <- is.na(mydate)&!is.na(as.Date(c(NA, head(mydate,-1))))
(result <- data.frame(mydate,expiration))