Все, что вам нужно, это отсортировать каждый столбец (в порядке убывания) и сгенерировать имена столбцов.
Создать фиктивные данные:
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