разные форматы дат с использованием as.POSIXct () или аналогичных - PullRequest
0 голосов
/ 21 ноября 2018

Я пишу функцию, в которой я строю несколько разных фреймов данных, составленных из временных рядов.Кадры данных состоят из нескольких столбцов.Первый из них всегда "время", а следующие параметры.Любой фрейм данных отличается друг от друга

После того, как я импортировал набор данных, функция создания календарного вектора «Время»

Time <- as.POSIXct(TS[,1])

В цикле for я использую функцию xts () для создания временного ряда одного параметра (один за другим), используя столбец «время» для упорядочения временного ряда.

xts(TS[,i],order.by = Time)

, затем я строю график.

В результате,скрипт выглядит следующим образом

TS <- read.table("ts.txt",header = T, dec = ".")
Time <- as.POSIXct(TS[,1])

    for (i in 2:length(TS[1,])
    {
    p <- plot(xts(TS[,i],order.by = Time)
    print(p)
    }

У меня проблемы с as.POSIXct(), когда формат моего векторного времени в кадрах данных не равен гггг-мм-дд.Вот несколько примеров:

В некоторых фреймах данных во «времени» у меня есть только «гггг», в котором вставка «мм-дд» в «гггг» не имеет никакого смысла из-за данных (в данном случае столбцы - это месяцы).

В других ситуациях у меня также есть отрицательные даты, потому что они являются BC.

Существуют ли другие функции, которые можно использовать для создания календарных дат, подходящих дляxts() использовать другой формат, как у меня?

Вот три примера набора данных, с которыми у меня проблема:

#1
year <- c(seq(1900, 2000, by = 10))
Jan <- c(rnorm(length(year), mean = 1, 5))
Feb <- c(rnorm(length(year), mean = 6, 9))
TS <- as.data.frame(cbind(year,Jan,Feb))                    
str(TS)

#2
year <- c(seq(-500, 2000, by = 100))
Jan <- c(rnorm(length(year), mean = 1, 5))
Feb <- c(rnorm(length(year), mean = 6, 9))
TS <- as.data.frame(cbind(year,Jan,Feb))                    
str(TS)

#3
time <- c("-100/01/01", "-100/06/01", "0/01/01", "1400/01/01", "2000/01/01")
people <- abs(c(rnorm(length(time), mean = 6, 9)))
TS <- as.data.frame(cbind(time,people))
str(TS)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...