R:追加行作为移动平均增长率
我有一个带有几列的数据框,我想在这个数据框的底部添加一行,其中包含每列中最后2行数据的增长率的移动平均值 数据: 列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 我已经尝试了下面的方法,但不幸的是它不起作用,我找不到一种方法来使用每列的最后一次计算作为新行。
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 = "|")