我的数据框中有一些时间序列变量
var1 var2 var3
[1,] 23 1 10
[2,] 24 2 11
[3,] 25 3 12
[4,] 26 4 13
[5,] 27 5 14
[6,] 28 6 15
我想整行地重塑
var1 (lag0), var1 (lag1), var1 (lag2), ... , var2 (lag0) , var2 (lag1) ...
[1,] 28 27 26 ... 6 5 ...
答案 0 :(得分:0)
您需要做的是对每一列进行排序(以降序排列)并生成列名。
生成虚拟数据:
data <- matrix(sample(1:18), 6)
colnames(data) <- paste0("var", 1:3)
var1 var2 var3
[1,] 6 18 14
[2,] 17 12 7
[3,] 15 1 16
[4,] 13 5 3
[5,] 10 8 2
[6,] 4 11 9
将原始数据重塑为一排矩阵:
result <- matrix(apply(data, 2, sort, TRUE), 1)
添加列名:
colnames(result) <- as.vector(sapply(colnames(data), paste0, " (lag", 0:(nrow(data) - 1), ")"))
最终结果(result[, 1:10]
):
var1 (lag0) var1 (lag1) var1 (lag2) var1 (lag3) var1 (lag4) var1 (lag5) var2 (lag0) var2 (lag1) var2 (lag2) var2 (lag3)
18 15 10 9 6 5 16 14 12 8