gpt4 book ai didi

r - 在 R 中生成新的滞后变量

转载 作者:行者123 更新时间:2023-12-02 00:39:06 24 4
gpt4 key购买 nike

我正在使用 R 中的 transform() 函数创建一个包含新变量的时间序列对象,但找不到合适的函数来计算今天和昨天之间变量 C 的差异。

这是我目前所得到的:

                 O       H       L       C  Typical Range 
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43

下一行将添加以下功能:

SPX <- transform(SPX, Return = (C - C(yesterday) ) / C(yesterday)))

显然,C(yesterday) 是不正确的。我已经尝试过 lag()、diff(),但没有找到正确的组合。

奖励问题:如何让 Typical 变量只显示给百分之一?

最佳答案

如果您要计算今天和昨天的 C 之差,正确的函数是 diff。

> SPX$Return <- diff(SPX$C)
> SPX
O H L C Typical Range Return
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85 NA
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71 12.35
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17 -1.17
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55 -7.71
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08 -4.60
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43 0.07

但看起来您想改为计算变化率,这可以使用 TTR 中的 ROC 函数来实现。

> SPX$Return <- ROC(SPX$C)
> SPX
O H L C Typical Range Return
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85 NA
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71 1.113793e-02
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17 -1.049869e-03
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55 -6.946068e-03
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08 -4.167314e-03
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43 6.354596e-05

关于r - 在 R 中生成新的滞后变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com