R中的行增长率

时间:2019-03-26 12:07:07

标签: r

我有一个数据框架,在一定的持续时间内,按行显示的财务数据很少,我想计算新列或新数据框中每一行的增长率,我正在处理的数据看起来会有些变化像这样

 df.new <- t(freeny.x) # Example dataframe

我想计算每个项目的增长率,即“滞后季度收入”,“价格指数”,“收入水平”,“市场潜力”

如果数据位于以下示例中的列中,我可以这样做

 df <- data.frame(date=paste(rep(2000:2017, each=4),"Q",rep(1:4, 18)), GDP= cumsum(sample(c(-0.5, 3), 72, TRUE)))
 df <- df %>% mutate(change=(GDP-lag(GDP,1))/lag(GDP,1)*100)
 df

如何使用df.new进行操作,请求专家帮助

1 个答案:

答案 0 :(得分:1)

为简单起见,我只使用了数据帧的前6列,然后我们就可以这样做

(df[, 2:ncol(df)] -  df[,-ncol(df)])/df[,-ncol(df)] * 100

#                           [,1]      [,2]      [,3]      [,4]      [,5]
#lag quarterly revenue -0.045473 -0.011260  0.267194 -0.020987  1.072278
#price index           -0.165606 -0.270726 -0.082313 -0.968717 -0.315935
#income level           0.076961  0.095098  0.160175  0.169507  0.244088
#market potential       0.026215  0.031603  0.024658  0.019260  0.017715

如果您需要带有n-1的第一列,则会返回NA列,您可以cbind

cbind(NA, (df[, 2:ncol(df)] -  df[,-ncol(df)])/df[,-ncol(df)] * 100)

为确保计算正确,请从第一行获取前两个值

(8.7924  - 8.7964)/8.7964 * 100
#[1]-0.045473

在最终输出的第1行第1列中给出相同的值,如图所示。

数据

df <- df.new[, 1:6]
df
#                         [,1]    [,2]    [,3]    [,4]    [,5]    [,6]
#lag quarterly revenue  8.7964  8.7924  8.7914  8.8149  8.8130  8.9075
#price index            4.7100  4.7022  4.6894  4.6856  4.6402  4.6255
#income level           5.8211  5.8256  5.8311  5.8405  5.8504  5.8646
#market potential      12.9699 12.9733 12.9774 12.9806 12.9831 12.9854