Преобразование объекта ts (временной ряд) в вектор в R

Мне нужно использовать функцию для вектора, который не принимает объект ts. Я пытаюсь преобразовать его в простой старый вектор, но я просто не могу понять это. Я гуглил, но в основном люди пытаются преобразовать типы данных в объект ts. Я хочу пойти другим путем. Любая помощь будет оценена по достоинству.


person Community    schedule 05.04.2010    source источник


Ответы (1)


data(AirPassengers)   # already in your R installation, via package "datasets"
AP = AirPassengers    
class(AP)
# returns "ts"

AP1 = as.numeric(AP)
# returns "numeric"

# another way to do it
AP1 = unclass(AP)

AP1 — это вектор с такими же значениями и длиной, что и у AP. Класс теперь является числовым, а не ts, что отчасти означает, что индексы больше не являются чем-то вроде объекта даты и времени, а представляют собой обычные последовательные целые числа.

Таким образом, с учетом конкретного вопроса в OP, любой из двух приведенных выше фрагментов будет «преобразовывать [объект ts] в простой старый вектор»

Если вам нужно сделать то же самое с индексами, а не со значениями или в дополнение к ним, например, с объектов Date на числовые, вы можете сделать это следующим образом:

fnx = function(num_days_since_origin, origin="1970-01-01") {
  as.Date(num_days_since_origin, origin="1970-01-01")
}

a = as.Date("1985-06-11")
a2 = as.numeric(a)
# returns: 5640
a3 = fnx(5640)
# returns: "1985-06-11" (a date object)
person doug    schedule 05.04.2010
comment
+1 Я люблю ункласс. Это отличный способ проверить содержимое объекта в R. - person Ian Fellows; 05.04.2010
comment
Серьезно? as.numeric(AirPassengers) возвращает выборочное значение на эту дату, а не саму дату. Пожалуйста, продемонстрируйте, как вместо этого получить секунды с эпохи из данных! - person Alex Brown; 26.03.2013