在R中以特殊方式将列更改为新数据帧

时间:2017-02-08 13:14:53

标签: r

我真的可以使用一些帮助作为R中的新b,我有一组超过一千(1000)行的列数据,以这种形式:

a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

我想使用数据来构建神经网络,我希望它看起来像这样(以数据框的形式):

x1  x2  x3  x4  y
1   2   3   4   5
2   3   4   5   6
3   4   5   6   7
4   5   6   7   8
5   6   7   8   9
6   7   8   9   10 

有什么简单的方法可以解决这个问题,或者我必须将每个问题分配到最后?有帮助吗?我很高兴代码可能有一些理解的评论,谢谢

2 个答案:

答案 0 :(得分:2)

我们可以使用

do.call(cbind, lapply(head(a,5), function(i) i:(i+5)))

或另一个选项是embed

as.data.frame(embed(a, 5)[,5:1])
#  V1 V2 V3 V4 V5
#1  1  2  3  4  5
#2  2  3  4  5  6
#3  3  4  5  6  7
#4  4  5  6  7  8
#5  5  6  7  8  9
#6  6  7  8  9 10

答案 1 :(得分:2)

另一个选项是来自guyrot()

wavethresh
library(wavethresh)
ncol <- 5
sapply(0:5, function(x) guyrot(a,-x)[1:6])
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    1    2    3    4    5    6
#[2,]    2    3    4    5    6    7
#[3,]    3    4    5    6    7    8
#[4,]    4    5    6    7    8    9
#[5,]    5    6    7    8    9   10
#[6,]    6    7    8    9   10    1