Добавление имен столбцов в XTS и изменение даты в XTS - PullRequest
0 голосов
/ 23 ноября 2018

xts выглядит следующим образом:

An ‘xts’ object on 1970-01-02 05:30:00/1976-03-29 05:30:00 containing:
  Data: num [1:2279, 1] 0.295 0.316 0.315 0.301 0.292 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : NULL
  Indexed by objects of class: [POSIXct,POSIXt] TZ: 
  Original class: 'double'  
  xts Attributes: NULL

Этот XTS генерируется с помощью другого кода и не имеет имен столбцов, как показано

dimnames(cor_BG_xts)
[[1]]
NULL
[[2]]
NULL
colnames(cor_BG_xts)
NULL

Как можно добавить имена столбцов в xts,Я пытался переполнить стек, но я получаю решения для data.frame вместо xts.Нужно сначала преобразовать его в df, а затем назвать столбцы.Кроме того, xts принимает даты вроде 1970-01-02 05:30:00.Как можно изменить хтс сказать 12/1/2009 12:00:00.

1 Ответ

0 голосов
/ 24 ноября 2018

Давайте сначала создадим воспроизводимый пример:

library(xts)

dates <- seq.Date(as.Date("2018-11-19"), as.Date("2018-11-23"), by = "day")
numbers <- 1:5

my_xts <- xts(numbers, dates)
my_xts
                    [,1]
2018-11-19 05:30:00    1
2018-11-20 05:30:00    2
2018-11-21 05:30:00    3
2018-11-22 05:30:00    4
2018-11-23 05:30:00    5

Теперь установить (переименовать) имя столбца несложно, либо используйте names, colnames или setNames.

names(my_xts) <- "new_column_name"
# setNames / colnames works as well.
# my_xts <- setNames(my_xts, "new_column_name")
# colnames(my_xts) <- "new_column_name"
# 
my_xts
                    new_column_name
2018-11-19 05:30:00               1
2018-11-20 05:30:00               2
2018-11-21 05:30:00               3
2018-11-22 05:30:00               4
2018-11-23 05:30:00               5

Для изменения формата индекса используйте indexFormat.Вы можете использовать любой формат даты и времени, который указан в деталях ?strptime.

indexFormat(my_xts) <- "%d/%m/%Y %H:%M:%S"
my_xts
                    new_column_name
19/11/2018 05:30:00               1
20/11/2018 05:30:00               2
21/11/2018 05:30:00               3
22/11/2018 05:30:00               4
23/11/2018 05:30:00               5
...