2013-08-16 1 views
-4

У меня есть следующие данные, которые я собрал в Excel, объединив еженедельные отчеты, выполненные в пятницу в прошлом году. Каждая строка является открытой учетной записью.R: совокупные строки данных с одинаковыми датами и атрибутами в недельные подсчеты для временных рядов

location code days.open  report.date 
LA  C1 186   8/2/2013  
SF  C2 186   8/2/2013  
SF  M  18   8/2/2013  
LA  C1 130   7/26/2013  
HB  M  30   7/26/2013  
LA  F  2   7/19/2013  
HB  F  188   7/19/2013  
LA  C3 90   7/12/2013  
LB  F  30   7/12/2013  
LB  F  36   7/12/2013  
SF  M  94   7/12/2013  
NB  C1 6   7/5/2013  
HB  M  18   7/5/2013  
LB  M  35   6/28/2013  
SD  C3 201   6/28/2013  
SD  F  69   6/21/2013  

и так для более миллиона записей.

Это мой первый раз, когда я использую R для временного хранения, и мне нужна помощь в подготовке данных для анализа временных рядов.

У меня есть несколько вещей, которые я хочу посмотреть на: 1) счетчик открытых счетов на каждую отчетную дату 2) подсчета открытых счетов на каждую отчетную дату по местоположению 3) в coount открытых счетов в каждая дата отчета по коду 4) подсчет открытых счетов разделенного в days.open < = 30, 30 < < days.open = 60, 60 < < days.open = 90, дни открытых> 90 5) То же самое относится как № 4 дальше по местоположению.

Я не совсем уверен, с чего начать.

Я ценю любую помощь, которую вы можете предоставить.

+3

Выдавая проект, а затем говоря «не знаю, с чего начать», действительно означает: прочитайте «Введение в R». Это не учебный сайт. Вам нужно сделать некоторые работы самостоятельно. –

ответ

3

Первый конвертировать данные в его формат и использовать plyr package или data.table package. Ниже приведено решение с использованием ddply из пакета plyr. Вы должны прочитать статью this, если хотите использовать plyr. В следующем коде mydata - это ваши данные.

mydata$report.date<-as.Date(mydata$report.date,"%m/%d/%Y") 

library(plyr) 
ddply(mydata,.(report.date),summarize, freq=length(days.open)) #1 
ddply(mydata,.(report.date,location),summarize, freq=length(days.open)) #2 
ddply(mydata,.(report.date,code),summarize, freq=length(days.open)) #3 

Создать переменную, которая назначает days.open на четыре интервала.

mydata$new<-with(mydata,ifelse(days.open<=30,"A",ifelse(days.open>30 & days.open<=60,"B",ifelse(days.open>60 & days.open<=90,"C","D")))) 

ddply(mydata,.(new),summarize, freq=length(days.open)) #4 
ddply(mydata,.(new,location),summarize, freq=length(days.open)) #5 

выход за один последний

new location freq 
1 A  HB 2 
2 A  LA 1 
3 A  LB 1 
4 A  NB 1 
5 A  SF 1 
6 B  LB 2 
7 C  LA 1 
8 C  SD 1 
9 D  HB 1 
10 D  LA 2 
11 D  SD 1 
12 D  SF 2 
+1

Благодарим вас за помощь. Я не совсем понял, с чего начать. Я прочитал документацию для нескольких пакетов, которые, казалось, были полезными для моих целей. Благодаря вам Plyr будет мой переход на подготовку данных о таймсерах для пакета прогнозов. – Rick

1

Вот ответ на ваш последний вопрос - как только вы поймете это, остальное будет тривиальным:

library(data.table) 
dt = data.table(your_df) 

cuts = c(-Inf, 30, 60, 90, Inf) 
dt[, .N, by = list(cut(days.open, cuts), location)] 
#   cut location N 
# 1: (90, Inf]  LA 2 
# 2: (90, Inf]  SF 2 
# 3: (-Inf,30]  SF 1 
# 4: (-Inf,30]  HB 2 
# 5: (-Inf,30]  LA 1 
# 6: (90, Inf]  HB 1 
# 7: (60,90]  LA 1 
# 8: (-Inf,30]  LB 1 
# 9: (30,60]  LB 2 
#10: (-Inf,30]  NB 1 
#11: (90, Inf]  SD 1 
#12: (60,90]  SD 1 
+0

Спасибо за ответ. Это будет полезно в будущем. – Rick

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