Как отсортировать xts-матрицу по столбцу, если заголовки - это числа - PullRequest
0 голосов
/ 16 марта 2020

У меня две xts-матрицы (A и B) содержали заголовки в виде «value1.value2». Эта комбинация меток сохраняется для обеих матриц как символы, чтобы избежать присоединения префикса «X» к числам буквой R.

A и B уже помечены их комбинацией символов.

Теперь я хочу чтобы прикрепить матрицу B с правой стороны от A (я использовал C <- cbind(A,B) или C <- merge.xts(A,B)).

Объединение или связывание их приводит к тому, что R прикрепляет X перед заголовками. Это не может быть отменено
colnames(C) <- as.character(colnames(C))

Как от него избавиться, если я хочу использовать числа в качестве заголовков (обратите внимание: это не файл, который Я загружаюсь, я пытаюсь привести к выводам вместе)?

В качестве следующего шага я хочу упорядочить столбцы по возрастанию и попытался:

C <- C[,sort(colnames(C), decreasing = F)]

Но R полностью портит порядок и, кажется, случайным образом размещает столбцы. Я также попробовал as.data.frame(cbind(A,B)) и отсортировал фрейм данных, но ничего не улучшилось.

Я рад получить ценные предложения.

К сожалению, я не могу привести минимальный рабочий пример .

Большое спасибо!

1 Ответ

0 голосов
/ 17 марта 2020

Вы можете переименовать colnames на основе colnames из отдельных объектов xts или использовать подстроку, например substring(colnames(C), 2).

создать образец данных:

library(xts)
A <- matrix(1:20, ncol = 2)
colnames(A) <- c("10.20", "20.01")
B <- matrix(20:1, ncol = 2)
colnames(B) <- c("10.10", "10.01")

# as xts objects
A <- as.xts(A, order.by = seq.Date(Sys.Date() - 9, Sys.Date(), by = "day"))
B <- as.xts(B, order.by = seq.Date(Sys.Date() - 9, Sys.Date(), by = "day"))

C <- merge(A, B)

# rename colnames to names before merge to get rid of X in front of name
colnames(C) <- c(colnames(A), colnames(B))

# alternative use substring: 
# colnames(C) <- substring(colnames(C), 2)

C[, sort(colnames(C), decreasing = F)]
           10.01 10.10 10.20 20.01
2020-03-08    10    20     1    11
2020-03-09     9    19     2    12
2020-03-10     8    18     3    13
2020-03-11     7    17     4    14
2020-03-12     6    16     5    15
2020-03-13     5    15     6    16
2020-03-14     4    14     7    17
2020-03-15     3    13     8    18
2020-03-16     2    12     9    19
2020-03-17     1    11    10    20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...