2017-01-17 9 views
1

У меня есть файл .csv с временными рядами. Я пытаюсь использовать ts(), и для его построения! Но мой первоначальный набор данных - это одна строка для одного действия. Поэтому я хочу сделать таблицу с частотами. Я сделал это, но для (существующих) дней у меня нет данных, я бы хотел присвоить значение частоты 0!Таблица частот с R (из необработанных временных рядов)

Вот пример моих данных:

> table(ech$Date.Time) # Frequencies of observed dates 

table : frequencies of observed dates

Я создал все существующие даты, используя:

> seq.Date(from = min(ech$Date.Time), to = max(ech$Date.Time), by = 1) 

И вот результат я хотел бы получить :

result wanted

Я пробовал несколько вещей, но это не работает так, как хотелось бы! Вот пример того, что я пробовал, но ничего не печатает, и я не понимаю сообщение об ошибке.

> plot(ts(data = ech, deltat = table(ech$Date.Time))) 

Error in plot(ts(data = ech, deltat = ech$Date.Time)) : erreur d'évaluation de l'argument 'x' lors de la sélection d'une méthode pour la fonction 'plot' : Error in Ops.Date(1, deltat) :/not defined for "Date" objects

Должен ли я использовать deltat или frequency, или что-то еще до использования ts() ??

спасибо.

ответ

1

Вы можете использовать merge, чтобы комбинировать всю последовательность дат с вашим набором данных.

Вам нужно убедиться, что столбцы дат одного класса (дата по этому случаю).

Использование набора данных и последовательность дат:

#sequence of dates 
dates2 <- data.frame(dates = seq(as.Date('2014-04-05'), as.Date('2014-04-15'), by = 1)) 

#merging the ech to sequence of dates 
newdf <- merge(dates2, ech, all.x = TRUE, by = 'dates') 
#setting NA to zero 
newdf$freq[is.na(newdf$freq)] <- 0 

Выход:

 dates freq 
1 2014-04-05 1 
2 2014-04-06 1 
3 2014-04-07 2 
4 2014-04-08 0 
5 2014-04-09 0 
6 2014-04-10 2 
7 2014-04-11 0 
8 2014-04-12 1 
9 2014-04-13 0 
10 2014-04-14 2 
11 2014-04-15 1 

Для завершения я использовал это как ECH:

dates <- as.Date(c("2014-04-05", "2014-04-06", "2014-04-07", 
        "2014-04-10", "2014-04-12", "2014-04-14", "2014-04-15")) 
freq <- c(1, 1, 2, 2, 1, 2, 1) 
ech <- data.frame(dates, freq) 
+1

Это отлично, я Ждут» t знать об этой функции слияния ... Большое спасибо за вашу помощь! –

+0

Добро пожаловать! Рад был помочь :) – LyzandeR

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

  • Нет связанных вопросов^_^