Сортировка столбцов и преобразование в один объект строки - PullRequest
0 голосов
/ 16 октября 2018

У меня есть некоторая переменная временного ряда в моем фрейме данных

        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        ...

1 Ответ

0 голосов
/ 16 октября 2018

Все, что вам нужно, это отсортировать каждый столбец (в порядке убывания) и сгенерировать имена столбцов.

Создать фиктивные данные:

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 
...