2015-06-12 2 views
0

Моих данных выглядят следующим образом:прокладочных данные многомерных временных рядов в R

> head(Full.df) 
     Date  Month  Week  Year Count.S Count.G Count.W Count.F 
1 2006-01-02 2006-01-01 2006-01-02 2006-01-01  0  7  9  6 
2 2006-01-03 2006-01-01 2006-01-02 2006-01-01  0  13  12  4 
3 2006-01-04 2006-01-01 2006-01-02 2006-01-01  0  13  15  4 
4 2006-01-05 2006-01-01 2006-01-02 2006-01-01  0  20  6  3 
5 2006-01-06 2006-01-01 2006-01-02 2006-01-01  0  19  19  4 
6 2006-01-07 2006-01-01 2006-01-02 2006-01-01  0  4  16  5 

Для одной переменного я использовал следующую строку коды:

ggplot(data = Full.df, aes(Month, Count.S)) + stat_summary(fun.y = sum, geom ="line") + scale_x_date(
labels = date_format("%m-%y"), 
breaks = "3 months") 

Я хотел бы построить Count.S, Count.G, Count.W, Count.F как четыре строки на одной плоскости, но я не могу понять, как построить все четыре переменные в ggplot (или любой другой пакет, если на то пошло). Благодарю.

РЕДАКТИРОВАТЬ: В то время как ссылка, предоставленная на другой вопрос, невероятно полезна, в ответе объясняется, как строить графики на одном изображении. Однако мне было интересно, как строить линии, соответствующие различным переменным, на одной оси XY.

+0

Я думаю, что 'library (reshape2)' и 'melt' будет делать трюк ... Вы можете группировать и цвет по переменной ...' id.vars' будут вашими столбцами даты ... – drmariod

ответ

1

два способа сделать это:

Если выборочные данные, созданные следующим образом:

Full.df <- data.frame(Date = as.Date("2006-01-01") + as.difftime(0:364, units = "days")) 
Full.df$Month <- as.Date(format(Full.df$Date, "%Y-%m-01")) 
Full.df[paste0("Count.", c("S", "G", "W", "F"))] <- 
    matrix(sample(100, 365 * 4, replace = TRUE), ncol = 4) 

Оптимальным способом использования reshape2 пакета:

molten <- melt(Full.df, id.vars = c("Date", "Month"), 
    variable.name = "Category", value.name = "Count") 
ggplot(data = molten, aes(x = Month, y = Count, colour = Category)) + 
    stat_summary(fun.y = sum, geom ="line") + 
    scale_x_date(labels = date_format("%m-%y"), breaks = "3 months") 

Альтернативы с использованием нескольких геометрий, но не легенд:

ggplot(Full.df, aes(x = Month)) + 
    stat_summary(aes(y = Count.S), colour = "blue", fun.y = sum, geom = "line") + 
    stat_summary(aes(y = Count.G), colour = "red", fun.y = sum, geom = "line") + 
    stat_summary(aes(y = Count.W), colour = "green", fun.y = sum, geom = "line") + 
    stat_summary(aes(y = Count.F), colour = "orange", fun.y = sum, geom = "line") + 
    scale_x_date(labels = date_format("%m-%y"), breaks = "3 months") 
+0

Спасибо, невероятно полезно! – Zlo

+0

Есть ли возможность использования расплавленного метода, когда в кадре данных есть НС? – Zlo

+0

@Zlo, похоже, отлично работает с 'NA' в 'data.frame'. В чем проблема? –

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