【问题标题】:Using which to assign Dates使用 which 分配日期
【发布时间】:2016-01-21 17:30:57
【问题描述】:

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

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

我收到以下错误:

'$tmp', "expiration", value = numeric(0)) 中的错误:
替换有0行,数据有452200

关于执行此操作的更好/正确方法的任何建议?

【问题讨论】:

  • 试试 vxdata$Dates[which(vxdata$value==NA) & which(lag(vxdata$value)>0)]
  • 啊。对 NA 来说,什么都不是“==”。学习使用is.na

标签: r


【解决方案1】:

使用 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))

【讨论】:

  • 我在使用 lag 功能时遇到了问题,以前从来没有使用过,而且很长时间没有使用 R...lag 似乎只适用于 timerseris 数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多