【发布时间】:2019-01-31 10:11:10
【问题描述】:
我有 2 个数据框,“eastern”包含特定日期的拍卖数据,另一个“monthly_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
提前致谢!
【问题讨论】:
-
如果您可以将输入数据与尝试的解决方案分开,那就太好了。我假设您的示例代码中的第一个数据是“东部”数据框的示例?您能否还提供一个“monthly_agg”结构的最小示例?谢谢。
-
@chris,感谢您的调查。我已经更新了查询。