gpt4 book ai didi

r - 如何按组应用data.table中的函数然后在新列中输出结果?

转载 作者:行者123 更新时间:2023-12-02 09:35:07 26 4
gpt4 key购买 nike

我有一个数据集如下所示:

Date<-rep(seq(as.Date("2000/1/1"), as.Date("2001/1/1"), by = "quarter"),2)
Name<-c(rep("a",5),rep("b",5))
Return<-rnorm(10,0,0.1)
dt<-data.table(Date,Name,Return)

示例的形式如下:

    Date        Name   Return
1: 2000-01-01 a 0.049675002
2: 2000-04-01 a -0.017131607
3: 2000-07-01 a 0.157891524
4: 2000-10-01 a 0.112921428
5: 2001-01-01 a 0.190409895
6: 2000-01-01 b 0.001505096
7: 2000-04-01 b -0.135364485
8: 2000-07-01 b 0.050353871
9: 2000-10-01 b 0.145750019
10: 2001-01-01 b 0.025039778

问题是数据表中的返回不是我想要的。我想使用的数据应该是价格的形式而不是返回的形式。该问题假设数据中第一个周期之前的价格为 100,并通过应用函数:Pt=Pt-1*(1+Rt) (t 和 t-1 是这个方程中的下标)我可以生成一个新的价格列。所以我希望我能得到类似以下的东西:

    Date      Name  Return       Price
1 01/01/2000 a 0.049675002 104.9675002
2 01/04/2000 a -0.017131607 103.1692383
3 01/07/2000 a 0.157891524 119.4587865
4 01/10/2000 a 0.112921428 132.9482432
5 01/01/2001 a 0.190409895 158.2629043
6 01/01/2000 b 0.001505096 100.1505096
7 01/04/2000 b -0.135364485 86.59368745
8 01/07/2000 b 0.050353871 90.95401482
9 01/10/2000 b 0.145750019 104.2105642
10 01/01/2001 b 0.025039778 106.8199736

具体来说,难点是:

  1. 我需要在不同名称的组中应用这个,真实的数据有大约 160 个不同的名称。在每个名称下,我需要假设起始价格为 P0 =100(我们在价格系列中不需要这个 100。

  2. 每个名称下的数据长度实际上是不同的,有的有 100 个观察值,有的可能只有 85 个,每个名称下的数据长度没有规律。

  3. 编写公式时如何使用上期价格计算当前价格?我找不到引用之前观察结果的方法,因为简单地执行 Price[-1] 不起作用。

非常感谢您的宝贵时间和提前提供的帮助!!!

最佳答案

这是一种方法:

DT[,Price:=100*cumprod(1+Return),by=Name]
# Date Name Return Price
# 1: 2000-01-01 a 0.049675002 104.96750
# 2: 2000-04-01 a -0.017131607 103.16924
# 3: 2000-07-01 a 0.157891524 119.45879
# 4: 2000-10-01 a 0.112921428 132.94824
# 5: 2001-01-01 a 0.190409895 158.26290
# 6: 2000-01-01 b 0.001505096 100.15051
# 7: 2000-04-01 b -0.135364485 86.59369
# 8: 2000-07-01 b 0.050353871 90.95401
# 9: 2000-10-01 b 0.145750019 104.21056
# 10: 2001-01-01 b 0.025039778 106.81997

关于r - 如何按组应用data.table中的函数然后在新列中输出结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176914/

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