У меня есть 2 фрейма данных, «восточный», содержащий данные аукциона на определенные даты, а другой, «month_agg», содержащий среднемесячное значение этих аукционов.Я хочу объединить фреймы данных таким образом, чтобы средний аукцион за указанный месяц был средней ценой аукциона предыдущего месяца.
Для восточного фрейма я извлек месяц и год издата аукциона, а затем объединяет месяц-год для формирования нового столбца.
восточный набор данных:
date month year concat
2014-10-17 10 2014 10 - 2014
2014-10-24 10 2014 10 - 2014
2014-10-31 10 2014 10 - 2014
2014-11-07 11 2014 11 - 2014
2014-11-17 11 2014 11 - 2014
2014-11-26 11 2014 11 - 2014
2014-12-26 12 2014 12 - 2014
2015-01-22 1 2015 1-2015
For the monthly_agg data frame, I have calculated the monthly averages for the month-year combination.
monthly_agg data-set:
date month year concat prev_avgL1
2014-10-17 10 2014 10 - 2014 avg10
2014-10-24 10 2014 10 - 2014 avg10
2014-10-31 10 2014 10 - 2014 avg10
2014-11-07 11 2014 11 - 2014 avg11
2014-11-17 11 2014 11 - 2014 avg11
2014-11-26 11 2014 11 - 2014 avg11
2014-12-26 12 2014 12 - 2014 avg12
2015-01-22 1 2015 1-2015 avg1(for the new year and new month)
Затем, используя left_join (), я объединил оба фрейма данных исоздал новый фрейм данных с именем Eastern1.
После объединения фрейм данных "Eastern1" имеет следующую структуру:
date concat prev_avgL1
>>2014-10-17 10 - 2014 avg10
>>2014-10-24 10 - 2014 avg10
>>2014-10-31 10 - 2014 avg10
>>2014-11-07 11 - 2014 avg11
>>2014-11-17 11 - 2014 avg11
>>2014-11-26 11 - 2014 avg11
>>2014-12-26 12 - 2014 avg12
>>2015-01-22 1 -2015 avg1(for the new year and new month)
eastern$Date=as.Date(eastern$Date,format="%d-%m-%Y")
eastern$year=year(eastern$Date)
eastern$Month=month(eastern$Date)
eastern$concat=paste(eastern$Month,"-",eastern$year)
monthly_agg=aggregate( L1_BID_PRICE ~ Month+year , agg , mean )
monthly_agg$concat=paste(monthly_agg$Month,"-",monthly_agg$year)
eastern1=left_join(eastern,monthly_agg,by="concat")
The expected result should be :
>date concat prev_avgL1
>>2014-10-17 10 - 2014 NA
>>2014-10-24 10 - 2014 NA
>>2014-10-31 10 - 2014 NA
>>2014-11-07 11 - 2014 avg10
>>2014-11-17 11 - 2014 avg10
>>2014-11-26 11 - 2014 avg10
>>2014-12-26 12 - 2014 avg11
>>2015-01-22 1 -2015 avg12...and so on
**Here the average for October is NA since the data-set has dates starting from October 2014.
The actual result is after doing left_join():
>date concat prev_avgL1
>>2014-10-17 10 - 2014 avg10
>>2014-10-24 10 - 2014 avg10
>>2014-10-31 10 - 2014 avg10
>>2014-11-07 11 - 2014 avg11
>>2014-11-17 11 - 2014 avg11
>>2014-11-26 11 - 2014 avg11
>>2014-12-26 12 - 2014 avg12
>>2015-01-22 1 -2015 avg1
Заранее спасибо!