2015-07-13 4 views
1

Я пытаюсь читать во временном ряду и делать plot.ts(), однако я получаю странные результаты. Возможно, я сделал что-то не так. Я попытался включить даты начала и окончания, но результат все еще не так. Любая помощь приветствуется. Спасибо.R Временные ряды plot.ts()

Это код и выход:

sales1 <- read.csv("TimeS.csv",header=TRUE) 
sales1 

salesT <- ts(sales1) 
salesT 
plot.ts(salesT) 

output: 
> sales1 <- read.csv("TimeS.csv",header=TRUE) 
> sales1 

    year q1 q2 q3 q4 
1 1991 4.8 4.1 6.0 6.5 
2 1992 5.8 5.2 6.8 7.4 
3 1993 6.0 5.6 7.5 7.8 
4 1994 6.3 5.9 8.0 8.4 

> salesT <- ts(sales1) 
> salesT 

Time Series: 
Start = 1 
End = 4 
Frequency = 1 
    year q1 q2 q3 q4 
1 1991 4.8 4.1 6.0 6.5 
2 1992 5.8 5.2 6.8 7.4 
3 1993 6.0 5.6 7.5 7.8 
4 1994 6.3 5.9 8.0 8.4 

> plot.ts(salesT) 

It looks like I can't paste the plot. instead of 1 graph it has 5 separate  
plots stacked onto each other. 
+0

публикует результат 'ул (Продажи1)' или 'dput (Продажи1 [1: 5 ,]) ' – Robert

+0

> str (sales1) 'data.frame': \t 4 obs. 5 переменных: $ в год: Int 1991 1992 1993 1994 $ q1: Num 4,8 5,8 6 6,3 $ q2: Num 4.1 5.2 5.6 5.9 $ д3: Num 6 6,8 7,5 8 $ Q4: Num 6.5 7.4 7.8 8.4 – user4745212

+0

> dput (sales1 [1: 5,]) Структура (список (год = c (1991L, 1992L, 1993L, 1994L, NA), q1 = c (4.8, 5.8, 6, 6.3, NA), q2 = c (4.1, 5.2, 5.6, 5.9, NA), q3 = c (6, 6.8, 7.5, 8, NA), q4 = c (6.5, 7.4, 7.8, 8.4, NA)), .Names = c (" год ", " q1 "," q2 "," q3 "," q4 "), row.names = c (" 1 "," 2 "," 3 "," 4 "," NA " ), класс = "data.frame") > – user4745212

ответ

0

Формат исходных данных трудно использовать непосредственно для временного ряда. Вы можете попробовать это вместо:

sales1 <- t(sales1[,-1]) 
sales1 <- as.vector(sales1) 
my_ts <- ts(sales1, frequency = 4, start=c(1991,1)) 
plot.ts(my_ts) 

enter image description here

+0

Спасибо. Он работает сейчас. в исходном наборе данных было всего 3 столбца: год, qtr, продажи, у меня были проблемы, поэтому я перенес его, но это не сработало. как бы вы это сделали, если бы у него было всего 3 столбца? – user4745212

+0

Если бы у меня был список из трех столбцов: год, квартал, продажи, и если бы данные за годы и кварталы были упорядочены хронологически, я бы, вероятно, отказался от первых двух столбцов с 'sales <- sales [, - c (1: 2), drop = T] 'и использовать тот же код, что и выше. Я думаю, что команда 'unlist()' тогда не нужна. Возможно, вы захотите убедиться, что в вашем списке нет пробелов, например, пропущенных записей за несколько лет или кварталов, чтобы избежать неприятных сюрпризов. – RHertel

+0

Спасибо, я попробую и дам вам знать результат. – user4745212

0

Эта линия делает времена в одной из серий, которые вряд ли то, что вы хотите:

> salesT <- ts(sales1) 

Нам нужно перенести кадр данных чтобы он читал строки, а не вниз, и мы используем c, чтобы превратить полученную матрицу в вектор, формирующий часть данных серии. (Продолжение после того, как график)

# create sales1 
Lines <- "year q1 q2 q3 q4 
1 1991 4.8 4.1 6.0 6.5 
2 1992 5.8 5.2 6.8 7.4 
3 1993 6.0 5.6 7.5 7.8 
4 1994 6.3 5.9 8.0 8.4" 
sales1 <- read.table(text = Lines, header = TRUE) 

# convert to ts and plot 
salesT <- ts(c(t(sales1[-1])), start = sales1[1, 1], freq = 4) 
plot(salesT) 

screenshot

Что касается комментария, если данные выглядит как это, то он более прямо вперед и линии ниже будет производить над сюжетом. Мы предположили, что данные сортируются и начинается с bginning года, так что мы не должны использовать второй столбец:

Lines2 <- "year qtr sales 
1 1991 q1 4.8 
2 1991 q2 4.1 
3 1991 q3 6.0 
4 1991 q4 6.5 
5 1992 q1 5.8 
6 1992 q2 5.2 
7 1992 q3 6.8 
8 1992 q4 7.4 
9 1993 q1 6.0 
10 1993 q2 5.6 
11 1993 q3 7.5 
12 1993 q4 7.8 
13 1994 q1 6.3 
14 1994 q2 5.9 
15 1994 q3 8.0 
16 1994 q4 8.4" 
sales2 <- read.table(text = Lines2, header = TRUE) 

salesT2 <- ts(sales2$sales, start = sales2$year[1], freq = 4) 
plot(salesT2) 

Update фиксированы. Добавлен ответ на комментарии.

+0

Спасибо за помощь.Я должен попробовать его с исходным набором данных, который имеет только 3 столбца: years, qtr, sales. Я не мог заставить его работать, поэтому я перенес его из оригинала. – user4745212

+0

Его более прямой вперед, если у вас только три столбца. См. Дополнение в конце. –

0

Здесь я думаю, что вам нужно отформатировать его правильно, попробуйте следующее:

salesT <- ts(sales1) 

ts.plot(salesT, frequency = 4, start = c(1991, 1), end = c(1994, 4))) 
+0

Я попробовал, сюжет выглядит странно с двумя прямыми линиями и двумя треугольными фигурами – user4745212

1

Попробуйте

salesT<-ts(unlist(t(sales1[,-1])),start=c(1991,1),freq=4) 

enter image description here