sum_last_3包含使用函数zoo::rollsum的列x的最后3个值的总和.

有没有办法只使用变量sum_last_3来重新创建变量x

library(dplyr)
library(zoo)

df <- data.frame(x = c(2,3,5,6,8,1,0,2,3,5,1,9,5,3))
df$sum_last_3 <- rollsum(df$x, k = 3, fill = NA, align = "right")

推荐答案

该操作是不可逆的;但是,如果不是用NA填充结果的前两个元素,而是使用partial=TRUE来获得部分和,那么它就是可逆的.下面的rollapplyr行与问题中的rollsum行相同,只是我们对前两个元素使用了部分求和.M是通过对单位矩阵运行运算而获得的运算的矩阵表示.最后,我们反转M并将其乘以df$SUM_LAST_3以恢复原始输入.

library(zoo)

df <- data.frame(x = c(2,3,5,6,8,1,0,2,3,5,1,9,5,3))
df$sum_last_3 <- rollapplyr(df$x, 3, sum, partial = TRUE) 

M <- rollapplyr(diag(nrow(df)), 3, sum, partial = TRUE)
solve(M, df$sum_last_3)
## [1] 2 3 5 6 8 1 0 2 3 5 1 9 5 3

R相关问答推荐

按块将载体转换为矩阵-reshape

高质量地将R格式的图表从Word中输出

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

创建重复删除的唯一数据集组合列表

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

在垂直轴中包含多个ggplot2图中的平均值

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

如何使用R对每组变量进行随机化?

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

将嵌套列表子集化为嵌套列表

如何在观测缺失的地方添加零

无法正确设置动态创建的Quarto标注的格式

方法::slotName如何处理非类、非字符的参数?

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

如何将一些单元格的内容随机 Select 到一个数据框中?

判断函数未加载R中的库

防止正则表达式覆盖以前的语句

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容

在具有条件的循环中添加行

以列名的字符向量作为参数按行应用自定义函数