Как я могу изменить XTS на data.frame и сохранить Индекс?

У меня есть XTS timeseries в R следующего формата, и пытаюсь сделать некоторую обработку, подмножество и реконструкцию прежде, чем экспортировать как CSV для работы в другой программе.

head(master_1)
                   S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650

и

str(master_1)
An ‘xts’ object from 2010-03-03 to 2010-05-25 08:30:00 containing:
  Data: num [1:4000, 1] 2.85 2.69 2.57 2.38 2.22 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "S_1"
  Indexed by objects of class: [POSIXt,POSIXct] TZ: 
  Original class: 'zoo'  
  xts Attributes:  
List of 1
 $ dateFormat: chr "Date"

И я хотел бы преобразовать это в data.frame, таким образом, я могу управлять им более легко и затем экспортировать в другую программу. Однако, когда я использую test1 <- as.data.frame(master_1) test1 действительно имеет Индекс (т.е. даты и время) видимый,

head(test1)
                       S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650 

Но Индекс не показывают,

str(test1)
'data.frame': 4000 obs. of  1 variable:
 $ S_1: num  2.85 2.69 2.57 2.38 2.22 ...

И запись csv write.csv(master_1, file="master_1.csv") не включает время или дату. Почему это, и как я могу включать данные данных/времени как столбец, таким образом, они используются в других командах R и экспортируются правильно?

Спасибо за любую справку.

29
задан Jaap 3 October 2018 в 19:15
поделиться

2 ответа

Это потому, что даты - это имена строк в вашем data.frame. Вам нужно сделать их отдельной колонкой.

Попробуйте следующее:

 data.frame(date=index(master_1), coredata(master_1))
50
ответ дан 28 November 2019 в 01:11
поделиться

Шейн прав. вы можете искать index (ваш xts). Вот воспроизводимый пример.

library(xts)
example(xts)
x = head(sample.xts)
datefield = index(x)
newdf = data.frame(x,datefield)

Тогда вы сможете просто экспортировать его в CSV. Конечно, вы также можете переименовать строки.

2
ответ дан 28 November 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: