首页 > 解决方案 > 将列值放在滞后组合中

问题描述

我正在尝试解决数据帧中 f(t)=f(t-1)+f(t-2)+f(t-3).....+f(tn) 组合的问题。根据给定数据中的Target(f(t)) 列值,我必须能够将其余值放在后续列中。我需要一些 R 代码来实现这种组合。

我在代码和屏幕截图(输入)中提供了以下数据:

data<-data.frame(id=1:5,
             target=c('b','a','c','d','e'),
             col1=c('e','b','e','b','a'),
             col2=c('d','e','a','c','d'),
             col3=c('a','d','b','e','c'),
             col4=c('c','c','d','a','b'))

output<-data.frame(id=1:5,
              target=c('b','a','c','d','e'),
              col1=c('e','b','a','c','d'),
              col2=c('d','e','b','a','c'),
              col3=c('c','d','e','b','a'),
              col4=c('a','c','d','e','b'))  

预期结果显示在屏幕截图(输出)中。

输入

输出

提前致谢...

标签: rdata-structures

解决方案


这是另一种base R使用方法embed

data[3:6] <- head(embed(rep(data$target, 2), 4)[-1,], 5)
data
#  id target col1 col2 col3 col4
#1  1      b    e    d    c    a
#2  2      a    b    e    d    c
#3  3      c    a    b    e    d
#4  4      d    c    a    b    e
#5  5      e    d    c    a    b

推荐阅读