2014-11-07 6 views
0

все. У меня возникли проблемы с построением временного ряда с использованием ggplot2. Я относительно новичок в R и не могу за всю жизнь понять, почему R не может выполнить мой код. Я получаю следующую ошибку: «Недопустимый вход: date_trans работает с объектами класса Date only». Что именно эта ошибка пытается мне рассказать? Я догадался об этой ошибке раньше, и, похоже, нет объяснения того, что означает эта ошибка, - просто код для устранения ошибки.ggplot2 и дата по оси x

У меня есть два столбца данных в текстовом файле, который я читаю в R. Один столбец содержит даты (например, в этом типе формата: 8/1/10). Другой содержит числовые значения, которые я хочу построить против даты. Даты указаны в месячной шкале (например, 8/1/10, 9/1/10, 10/1/10).

Вот код, который я использовал, чтобы попытаться построить временные ряды этих данных (мой dataframe присвоен df26):

ggplot(df26, aes(df26$Mo_Yr, df26$Vol_Tot)) + 
    geom_line() + 
    scale_x_date(labels=date_format("%b-%y")) + 
    xlab("Date") + 
    ylab("Total Volume") 

Любая помощь будет оценен по достоинству!

Вот некоторые выборочные данные из моего dataframe (df26):

Mo_Yr Vol_Tot 
8/1/10 691254 
9/1/10 610358 
10/1/10 629178 
11/1/10 569872 
12/1/10 531769 
1/1/11 459966 
2/1/11 428976 
3/1/11 555656 
4/1/11 570110 
5/1/11 614337 
6/1/11 661598 
7/1/11 717756 
8/1/11 693103 
9/1/11 610873 
10/1/11 613217 
11/1/11 564546 

Спасибо!

+1

'Mo_Yr' не относится к классу' Date'. Изучите 'help (« as.Date »)'. – Roland

ответ

1

Ваш Mo_Yr столбец не относится к классу Date. Однако, что еще более важно, он не отформатирован так, как нужно, чтобы дата была отформатирована. (Я предполагаю из контекста, что он идет M/D/Y, но R не знает этого).

Пакет lubridate (который вы должны установить) - это хороший способ проанализировать дату из формата. В вашем случае:

library(lubridate) 
library(scales) 
library(ggplot2) 

# the important line: 
df26$date <- as.Date(parse_date_time(df26$Mo_Yr, "%m/%d/%y")) 

print(ggplot(df26, aes(date, Vol_Tot)) + 
    geom_line() + 
    scale_x_date(labels=date_format("%b-%y")) + 
    xlab("Date") + 
    ylab("Total Volume")) 
+0

Зачем рекламировать lubridate для этого? 'as.Date (df26 $ Mo_Yr, format ="% m /% d /% y ")' требует меньше ввода и вам не нужен пакет. – Roland

+0

Извините за поздний ответ - спасибо за все предложения! Я прочитал как. Дед и сразу нашел решение. Спасибо! – soitgoes

Смежные вопросы