我真的可以使用一些帮助作为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
有什么简单的方法可以解决这个问题,或者我必须将每个问题分配到最后?有帮助吗?我很高兴代码可能有一些理解的评论,谢谢
答案 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