R:追加行作为移动平均增长率

R:追加行作为移动平均增长率,r,R,我有一个带有几列的数据框,我想在这个数据框的底部添加一行,其中包含每列中最后2行数据的增长率的移动平均值 数据: 列A,((1-4)/4+(4-5)/5)/2=-0.475和B,2/15的新行 因此,数据帧希望: A | B 3 | 4 4 | 3 5 | 5 4 | 3 1 | 5 -0.475 0.133 我已经尝试了下面的方法,但不幸的是它不起作用,我找不到一种方法来使用每列的最后一次计算作为新行。

我有一个带有几列的数据框,我想在这个数据框的底部添加一行,其中包含每列中最后2行数据的增长率的移动平均值

数据:

A
((1-4)/4+(4-5)/5)/2=-0.475
B
2/15
的新行

因此,数据帧希望:

A      |   B
3      |   4
4      |   3
5      |   5
4      |   3
1      |   5
-0.475    0.133
我已经尝试了下面的方法,但不幸的是它不起作用,我找不到一种方法来使用每列的最后一次计算作为新行。我该怎么做

moving_avg_growth_rate = function (x) {
  growth = x/lag(x) - 1
  moving_average = filter(growth, rep(1/2, 2))
  return (moving_average)
}

lapply(dataframe, moving_avg_growth_rate)

以下是一些可能性:

1)修改的相关代码
lag
用于时间序列。还可以使用tail获取最后一次移动的平均值:

moving_avg_growth_rate = function (x) {
  growth = x[-1]/x[-length(x)] - 1
  moving_average = filter(growth, rep(1/2, 2), sides = 1)
  tail(moving_average, 1)
}
rbind(dataframe, lapply(dataframe, moving_avg_growth_rate))
1a)请注意,因为我们实际上只需要我们可以使用的最后一个移动平均线

moving_avg_growth_rate2 <- function(x) {
   xx <- tail(x, 3)
   mean(xx[-1] / xx[-3] - 1)
}
rbind(dataframe, lapply(dataframe, moving_avg_growth_rate2))

移动平均增长率2以下是一些可能性:

1)修改的相关代码
lag
用于时间序列。还可以使用tail获取最后一次移动的平均值:

moving_avg_growth_rate = function (x) {
  growth = x[-1]/x[-length(x)] - 1
  moving_average = filter(growth, rep(1/2, 2), sides = 1)
  tail(moving_average, 1)
}
rbind(dataframe, lapply(dataframe, moving_avg_growth_rate))
1a)请注意,因为我们实际上只需要我们可以使用的最后一个移动平均线

moving_avg_growth_rate2 <- function(x) {
   xx <- tail(x, 3)
   mean(xx[-1] / xx[-3] - 1)
}
rbind(dataframe, lapply(dataframe, moving_avg_growth_rate2))

moving_avg_growth_rate2分别计算增长率,然后
rbind
将其计算到原始df分别计算增长率,然后
rbind
将其计算到原始df
Lines <- "
A      |   B
3      |   4
4      |   3
5      |   5
4      |   3
1      |   5"
dataframe <- read.table(text = Lines, header = TRUE, sep = "|")