2014-04-05 3 views
0

У меня есть данные, которые, как этоКак построить несколько временных рядов

Date,  VID, C1, C2, C3 
2/1/2014, V01, ON, OFF, OFF 
2/2/2014, V01, ON, OFF, OFF 
2/3/2014, V01, ON, OFF, OFF 
2/4/2014, V01, ON, OFF, OFF 
2/1/2014, V02, OFF, ON, OFF 
2/3/2014, V02, OFF, OFF, ON 
2/4/2014, V02, ON, ON, OFF 
2/5/2014, V02, ON, OFF, ON 

Есть много VID-х и C1, C2, C3 категоричны. Вот как я рисую этот &, это очень трудоемко, поэтому мне хотелось знать, могу ли я построить все временные ряды для одного VID ib на одном графике и как это сделать для всех VID?

library(sqldf) 
library(zoo) 

#I execute this code for each variable and get separate plot 
#I would like to plot all C1,C2,C3 for each vehicle in single plot 
#and plot for each vehicle 
vehicle_V01 = sqldf("select * from df where Vehicle='V01'") 
vehicle_V01$C1_numeric = as.numeric(vehicle_V01$C1) 
vehicle_V01$C2_numeric = as.numeric(vehicle_V01$C2) 
vehicle_V01$C3_numeric = as.numeric(vehicle_V01$C3) 
ts = zoo(vehicle_V01$C1_numeric ,vehicle_V01$Date) 
plot(ts) 

Это очень удобное время, любая идея, как это сделать эффективно?

+0

Если Cs просто и выключаться, это на самом деле не временные ряды, это? Единственными численными значениями, которые они могли бы принять, были бы 1 и 2. –

+0

Вы можете иметь временные ряды с двоичными данными. Они не могут быть проанализированы с использованием традиционных методов анализа временных рядов, но это допустимый тип временных рядов. См. Здесь реферат по вопросу: http://link.springer.com/chapter/10.1007%2F0-306-48102-2_9 –

ответ

0

Я бы использовал ggplot2 и reshape2 для построения и изменения данных.

library(reshape2) 
library(ggplot2) 
df=melt(df,id.vars=c('Date','VID')) 
df$value=as.numeric(vehicle$value)#ON = 2, OFF = 1 

ggplot(df,aes(x=Date,y=value))+geom_line()+facet_grid('variable+VID~.') 

Значение даты было изменено на последние 3 строки, чтобы быть меньше, но выходная графика выглядит так, как показано ниже. Это то, что вы ищете? (Кроме того, я не использовал используемые вами значения даты, но вы можете использовать их при запуске кода или просто изменить метки осей на них).

enter image description here

+0

СПАСИБО !!, да, это то, что я хотел, кроме того, что хочу сгруппировать все графики для автомобиля (V01), а затем V02 и т. д. вместо C (n). Любая идея, как это можно сделать? – user3056186

+0

Как вы относились к C (n)? Поскольку в вашем случае есть три разные переменные, вам нужно будет делать их по одному (путем подмножества данных (например, 'df1 = df [, df $ variable == 'C1']'), если вы не желал группировать их. Вы также можете выполнить 'ggplot (df, aes (x = Date, y = value, group = variable)) + geom_line() + facet_grid ('VID ~.')', но тогда вы не сможете отличить разные значения от того, как выглядит графика. Вы можете добавить «color = variable» или «linetype = variable», но при этом все равно будут проблемы с перекрытием. –

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