2016-08-06 3 views
0

Мои данные организованы ежеквартально и еженедельно. Я смог преобразовать квартальные данные в формат даты, используя пакет Zoo и пакет TS. Однако я не совсем уверен, можно ли анализировать еженедельные данные.Анализ еженедельных наблюдений/данных

Например, вот как данные выглядит следующим образом:

TestData:

Fiscal.Year Fiscal.Quarter Seller Product.Bookings.Net Product.Bookings.Quantity Product.Family Sales.Level.1   Group Fiscal.Week 
1  2015  2015.50 ABCD1234     4000       4  Paper cup  Americas Paper Division   32 
2  2014  2014.00 DDH1234     300       5 Paper tissue Asia Pacific Paper Division   33 
3  2015  2015.00 PNS1234     298       6   Spoons   EMEA  Cutlery   34 
4  2016  2016.75 CCC1234     289       7   Knives  Africa  Cutlery   33 

Как вы можете видеть, я был в состоянии преобразовать четверть день в формат даты. Однако я не совсем уверен, можем ли мы анализировать еженедельные данные.

я принял удар на преобразование недельные данные (т.е. фискальная Неделя) на сегодняшний день ТС типа():

library("lubridate") 
testdata$Fiscal.Year <- paste("1/1/",testdata$Fiscal.Year,sep = "") 
testdata$Fiscal.Date <- dmy(testdata$Fiscal.Year) + lubridate::weeks(testdata$Fiscal.Week) 
testdata$date_ts <- as.ts(testdata$Fiscal.Date) 

Я только что проверил вывод:

class(testdata$date_ts) 
[1] "ts" 

Так, кажется, Я был в состоянии преобразовать эти недели к типу TS, но вот что происходит, когда:

Attempt1

Я пытаюсь использовать POSIXlt и POSIXct функции из базового класса (чтобы иметь возможность рисовать графики и т.д.):

as.POSIXlt(testdata$date_ts) 
Error in as.POSIXlt.default(testdata$date_ts) : 
    do not know how to convert 'testdata$date_ts' to class “POSIXlt” 

Attempt2

as.POSIXct.date(testdata$Fiscal.Date) 
Error in as.POSIXct.date(testdata$Fiscal.Date) : 
    'testdata$Fiscal.Date' is not a "date" object 

, хотя, мой объект имеет Тип:

class(testdata$Fiscal.Date) 
[1] "Date" 

у меня есть два взаимосвязанных вопроса:

Вопрос 1: Может кто-нибудь, пожалуйста, помогите мне с ошибкой? Я не совсем уверен, что проблема в каждом из двух методов выше.

Вопрос 2: Есть ли более эффективный способ (с точки зрения скорости и количества строк кода) делать то, что я сделал?

Мой пост влияет: Time series weekly data и после прочтения этой темы: Analyzing Daily/Weekly data using ts in R

Пожалуйста, помогите мне. Заранее спасибо.


Вот dput мои данные: dput (TestData)

structure(list(Fiscal.Year = c(2015, 2014, 2015, 2016), Fiscal.Quarter = c("2015Q3", 
"2014Q1", "2015Q1", "2016Q4"), Seller = c("ABCD1234", "DDH1234", 
"PNS1234", "CCC1234"), Product.Bookings.Net = c(4000, 300, 298, 
289), Product.Bookings.Quantity = c(4, 5, 6, 7), Product.Family = c("Paper cup", 
"Paper tissue", "Spoons", "Knives"), Sales.Level.1 = c("Americas", 
"Asia Pacific", "EMEA", "Africa"), Group = c("Paper Division", 
"Paper Division", "Cutlery", "Cutlery"), Fiscal.Week = c(32, 
33, 34, 33)), .Names = c("Fiscal.Year", "Fiscal.Quarter", "Seller", 
"Product.Bookings.Net", "Product.Bookings.Quantity", "Product.Family", 
"Sales.Level.1", "Group", "Fiscal.Week"), row.names = c(NA, 4L 
), class = "data.frame") 
+0

вы можете поделиться dput ваших данных, я получаю ошибку, пытаясь read.table вашего данные. – shayaa

+0

@shayaa: Я добавил dput ... – watchtower

+1

Вы даже прочитали 'help (" as.ts ")'? Он создает объект временного ряда, который является совершенно другим зверем, чем объект datetime. – Roland

ответ

0

Ok. Итак, я выяснил ответ на мой вопрос:

Я не должен преобразовывать объект класса Date в TS, потому что он не является периодическим. Я должен использовать классы классов zoo, чтобы быть последовательными.

library("lubridate") 
#take care of weeks: 
testdata$Fiscal.Year <- paste("1/1/",testdata$Fiscal.Year,sep = "") 
testdata$Fiscal.Date <- dmy(testdata$Fiscal.Year) + lubridate::weeks(testdata$Fiscal.Week) 

#testdata$date_ts <- as.ts(testdata$Fiscal.Date) 
ggplot(testdata,aes(x=year(testdata$Fiscal.Date),y=testdata$Product.Bookings.Net))+geom_bar(stat = "identity") 

Это хорошо работает.

То же самое относится и к двум другим вопросам, которые были опубликованы мной. Я нашел этот pdf чрезвычайно полезным в моем анализе: https://faculty.washington.edu/ezivot/econ424/Working%20with%20Time%20Series%20Data%20in%20R.pdf

Это разрешило мой запрос. Я до сих пор открыт для любых мыслей для чтения «еженедельно» данных, а затем эффективен преобразования его в типе «Дата»

+1

Обратите внимание, что описание класса chron в связанном файле washington.edu неверно. Старое, но, вероятно, все еще в значительной степени правильное описание можно найти в статье справочной службы R здесь: https://www.r-project.org/doc/Rnews/Rnews_2004-1.pdf –

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