gpt4 book ai didi

r - 计算从基准年 (t0) 到随后但有限的系列年 (t1, ..., tk) 的百分比变化

转载 作者:行者123 更新时间:2023-12-04 10:12:41 27 4
gpt4 key购买 nike

假设您有某种费用的年度数据。您对第一个值 (t0) 和每个后续值 (t1, ... -> tx) 之间的百分比差异感兴趣,但仅针对特定的一组观察值,即对于下一组,后续年份的新系列开始.

示例:

    value <- c(10225,10287,10225,10087,10344,10387,10387,14567,13992,15432)
case <- c(A,A,A,B,B,B,B,B,C,C)

year value case change
1989 10225 A 0.00
1990 10287 A 0.61 # ((100/10225)*10287)-100
1991 10262 A 0.36
1995 10087 B 0.00
1996 10344 B 2.55 # ((100/10087)*10344)-100
1997 10387 B 2.97
1978 10387 B 2.97
1979 14567 B ...
1980 13992 C
1981 15432 C

我如何计算 R 的百分比变化?

我之前的帖子和类似帖子(例如 this post on calculating relative difference)的答案非常有帮助。再次感谢!

但是,我必须意识到我的情况更加复杂,因此相应地编辑了我的问题。问题是我没有随后几年的一个系列,而是随后几年的一系列有限系列,每组案例一个。

非常感谢任何想法!

非常感谢。

最佳答案

这个呢?

((value[-1]/value[1])-1)*100
[1] 0.6063570 0.0000000 -1.3496333 1.1638142 1.5843521 0.7334963

另一种选择

((value - value[1]) / value[1]) * 100
[1] 0.0000000 0.6063570 0.0000000 -1.3496333 1.1638142 1.5843521 0.7334963

对于您更新的问题,这里有两个基于 R 的解决方案:

transform(df, Change = unlist(sapply(split(value, case), function(x) ((x - x[1]) / x[1]) * 100)))
value case Change
A1 10225 A 0.000000
A2 10287 A 0.606357
A3 10225 A 0.000000
B1 10087 B 0.000000
B2 10344 B 2.547834
B3 10387 B 2.974125
B4 10387 B 2.974125
B5 14567 B 44.413602
C1 13992 C 0.000000
C2 15432 C 10.291595

transform(df, Change = unlist(aggregate(value ~ case, function(x) ((x - x[1]) / x[1]) * 100, data=df)$value))
value case Change
01 10225 A 0.000000
02 10287 A 0.606357
03 10225 A 0.000000
11 10087 B 0.000000
12 10344 B 2.547834
13 10387 B 2.974125
14 10387 B 2.974125
15 14567 B 44.413602
21 13992 C 0.000000
22 15432 C 10.291595

关于r - 计算从基准年 (t0) 到随后但有限的系列年 (t1, ..., tk) 的百分比变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321990/

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