我如何在R中落后于Quarters?

时间:2018-10-02 14:38:16

标签: r dplyr zoo

首先-谢谢您查看我的问题-不管您是否回答。

我正在尝试向DF添加一个包含“四分之一”值的滞后值的列,但是,这样做时,我得到以下警告:

Warning messages:
1: In mutate_impl(.data, dots) :
 Vectorizing 'yearqtr' elements may not preserve their attributes

下面是我的示例数据(我的数据始于1/3/2018)

Ticker  Price   Date      Quarter
  A       10    1/3/18    2018 Q1
  A       13.5  2/15/18   2018 Q1
  A       12.9  4/2/18    2018 Q2
  A       11.2  5/3/18    2018 Q2
  B       35.2  1/4/18    2018 Q1
  B       33.1  3/2/18    2018 Q1
  B       31    4/6/18    2018 Q2
 ...      ...   ...        ...
  XYZ     102    5/6/18   2018 Q2

我的桌子很大,有很多股票和多个日期。我计算四分之一列的方式是:

df$quarter <- lag(as.yearqtr(df$Date))

但是-我无法添加一列会滞后于Quarter的值。有人知道可行的解决方法吗?

我想要以下输出:

Ticker  Price   Date      Quarter  Lag_Q
  A       10    1/3/18    2018 Q1   NA
  A       13.5  2/15/18   2018 Q1   NA
  A       12.9  4/2/18    2018 Q2   2018 Q1
  A       11.2  5/3/18    2018 Q2   2018 Q1
  B       35.2  1/4/18    2018 Q1   NA
  B       33.1  3/2/18    2018 Q1   NA
  B       31    4/6/18    2018 Q2   2018 Q1
 ...      ...   ...        ...
  XYZ     102    5/6/18   2018 Q2   2018 Q1

1 个答案:

答案 0 :(得分:1)

首先,我建议组织您的数据,以便每一列代表单个证券的价格,每一行代表一个特定的日期。从那里,您可以轻松地转换所有证券,但是我不确定您的最终目标是什么。 xts软件包非常出色,并已在c中进行了优化,并且是证券行业的一种标准。我强烈建议您进行探索。但这超出了您的帖子范围!

但是对于您的数据结构,应该一行:

df$lag_Q <- as.yearqtr( ifelse(test = (df$quarter=="2018 Q1"), 
                                yes = NA, 
                                 no = df$quarter-0.25) )