r - 如何在 r 中落后 Quarters?

标签 r dplyr zoo

首先,感谢您查看我的问题 - 无论您是否回答。

我正在尝试将包含季度值滞后值的列添加到我的 DF,但是,当我这样做时,我收到以下警告:

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

下面是我的示例数据(我的数据从 2018 年 1 月 3 日开始)

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

我有一张巨大的 table ,里面有多种股票和多个日期。我计算四分之一列的方法是:

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

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

我想要以下输出:

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

最佳答案

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

对于您的数据结构,一行应该可以:

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

关于r - 如何在 r 中落后 Quarters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52610687/

相关文章:

使用重复列 reshape 数据

r - 如何在 R 中 dplyr::inner_join 多 tbls 或 data.frames

r - group_by操作后dplyr如何为每个组生成数据帧?

r - 动物园对象和毫秒时间戳

Rollapply 在 R 时间范围索引中应用

R:如何连接分成多行的字符串?

对不平衡数据进行随机森林回归

r - 有没有一种快速的方法来读取 R 中的图像尺寸(W x H)

r - 在两列上使用 Rollapply

r - 使用条件变异分配多个值