как, в R, построить график времени дня и календарной даты - PullRequest
3 голосов
/ 06 декабря 2010

Я сожалею, что пришел сюда после того, как сгорел во время поисков в Интернете по этому упрощенному вопросу.

У меня есть несколько наборов данных для построения в R, каждый из которых состоит из двух столбцов данных: время, дата. Я использую R 2.11.0 на компьютере Windows, через Rgui.

Время - это «время суток», когда наблюдается событие. Например, он распознается как:

Factor w/ 87 levels "5:53","5:54",..: 84 85 85 85 86 ...

Дата - календарная дата, распознаваемая как:

Class 'Date'  num [1:730] 13879 13880 13881 13882 13883 ...

Значения времени записываются в формате 24-часовых часов, ч: мм или чч: мм. Значения даты отображаются гггг-мм-дд.

Я хочу построить график времени (ось Y) и даты (ось X).

Использование

plot(date,time)

дает точно выглядящий график, но ось y помечена как числовые значения коэффициента (от 0 до 90), а не как желаемые, упорядоченные по времени уровни переменной фактора. Ось X помечена в желаемом удобочитаемом формате.

Как я могу это исправить? Есть ли в R формат времени, в который я могу преобразовать свою переменную времени? Впоследствии я хотел бы также сделать арифметику со значениями времени, и не прочь иметь при себе один столбец значений для использования при построении и один столбец значений для математики.

В Интернете я наткнулся на несколько примеров манипулирования переменными (дата + время) в R и их преобразования в разные форматы. Я не верю, что это моя проблема, так как у меня есть отдельные поля для времени и даты, и я хочу нанести одно на другое.

Заранее благодарю вас за ваши предложения или ваши указания относительно веб-ресурса (в моем месте нет соответствующих библиотек или книжных магазинов).

Ответы [ 3 ]

1 голос
/ 06 декабря 2010

Может быть более простой способ сделать это, но вы всегда можете пометить ось Y самостоятельно.Отрегулируйте вектор ticksAt ниже, чтобы найти что-то подходящее для ваших данных.

Data <- data.frame(date=Sys.Date()+1:10,time=paste(5,41:50,sep=":"))
with(Data, plot(date,time,yaxt="n"))
ticksAt <- c(1,3,5,7,9)
axis(2, at=ticksAt, labels=as.character(Data$time)[ticksAt])

?plot.zoo имеет несколько хороших примеров того, как создавать красивые аннотации на осях, хотя некоторые из них могут быть специфичными для зоопарка,?par тоже хороший ресурс.

0 голосов
/ 06 декабря 2010

Предположим, у вас есть два вектора: один из класса Date с именем "dt", а другой с именем "tm":

 x <- paste(as.character(dt[1:2]), as.character(tm))
 strptime(x, "%Y-%m-%d %H:%M")
## [1] "2008-01-01 05:53:00" "2008-01-02 05:54:00"
class(strptime(x, "%Y-%m-%d %H:%M"))
##  [1] "POSIXt"  "POSIXlt"
0 голосов
/ 06 декабря 2010

ts и timeSeries - два хороших варианта.
Взгляните на
Связанные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...