Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何在r中落后四分之一?_R_Dplyr_Zoo - Fatal编程技术网

我如何在r中落后四分之一?

我如何在r中落后四分之一?,r,dplyr,zoo,R,Dplyr,Zoo,首先也是最重要的一点——感谢您查看我的问题——无论您是否回答 我试图将包含四分之一值滞后值的列添加到我的DF中,但是,当我这样做时,我得到以下警告: Warning messages: 1: In mutate_impl(.data, dots) : Vectorizing 'yearqtr' elements may not preserve their attributes 以下是我的样本数据(我的数据从2018年1月3日开始) 我有一张巨大的桌子,上面有多种股票和多种日期。我计算季度列

首先也是最重要的一点——感谢您查看我的问题——无论您是否回答

我试图将包含四分之一值滞后值的列添加到我的DF中,但是,当我这样做时,我得到以下警告:

Warning messages:
1: In mutate_impl(.data, dots) :
 Vectorizing 'yearqtr' elements may not preserve their attributes
以下是我的样本数据(我的数据从2018年1月3日开始)

我有一张巨大的桌子,上面有多种股票和多种日期。我计算季度列的方法是:

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

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

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

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

df$lag\u Q尝试添加
lag\u Q
列时,数据帧是否已分组?查看此问题:看起来您只是希望由
Ticker
group完成延迟?如果是这样,您可以使用
库(dplyr);df%%>%groupby(Ticker)%%>%mutate(Lag\uq=Lag(Quarter))%%>%ungroup
见,非常感谢。这确实有效。我会确保我阅读了xts软件包。谢谢贾斯汀!随时从SO帖子中学习的另一个很好的建议是,如果你没有在最后期限内(现在谁没有?),我会查阅ifelse的文档,as.yearqtr和data.frame,以便更深入地理解函数和类的规则。一旦你了解了支配它们的约束,前进的道路就会变得更加清晰。祝你好运
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
df$lag_Q <- as.yearqtr( ifelse(test = (df$quarter=="2018 Q1"), 
                                yes = NA, 
                                 no = df$quarter-0.25) )