给定股票的数据集,我的任务是在给定一年的数据的情况下,生成每月特定股票的平均表现。 (关键是月份)
对于某些未知的某些月份,其性能平均值会返回NaN值。
我从以下链接的文件中导入我的数据集到mongodb: https://drive.google.com/file/d/0B8ltsj7C_DRLYXltQnBLTTk2Mk0/view?usp=sharing
导入后,我运行我的mapreduce算法并使用检查结果 db.BR.report.find()
这是我的mapreduce代码:
// mongoimport --host=127.0.0.1 -d contempoFinal -c BR --type csv --file /Users/eddrichjanzzenang/Desktop/BR.csv --headerline
var map = function(){
var date = this.Date.substring(5,7);
var p = ((this.Close - this.Open)/ this.Close) * 100;
emit({date: date}, {p:p})
}
var reduce = function(key, values){
var total = 0;
for(var i = 0; i < values.length; i++){
total += values[i].p;
}
if(values.length != 0){
total = total/values.length;
}
return {ave:total}
// return {values:values}
}
db.runCommand({
mapReduce: "BR",
map: map,
reduce: reduce,
out: "BR.reports"
})
// ------------------------------------------------------------------------------------------------------------
// --------------------------------------This is the cause of the error ---------------------------------------
// ------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------
// return {values:values} instead of return {ave:total} in the reduce function
//run the ff command: db.BR.reports.find().pretty()
// As you can see, another values array has been added inside the original values array.
// "_id" : {
// "date" : "08"
// },
// "value" : {
// "values" : [
// {
// "values" : [
// {
// "p" : -2.078157439320257
// },
// {
// "p" : -0.5431533054662951
// },
// {
// "p" : 0.9795132377415724
// },
// {
// "p" : -3.9067422810333916
// },
// {
// "p" : 0.1845049200491997
// },
// {
// "p" : 7.313954241902089
// },
// {
// "p" : -1.964815364505311
// },
// {
// "p" : -1.973890069845128
// },
// {
// "p" : -1.3640210674629443
// },
// {
// "p" : -0.3878227361674579
// },
// {
// "p" : -0.25217148366968656
// },
// {
// "p" : 1.1589458521552969
// },
// {
// "p" : 2.3657055385471732
// },
// {
// "p" : 0.5798810913377168
// },
// {
// "p" : -1.9705884532497502
// }
// ]
// },
// {
// "p" : 0.7537092460991003
// },
// {
// "p" : 0.40904829064892917
// },
// {
// "p" : -0.18791946308724908
// },
// {
// "p" : -2.4136067584642555
// },
// {
// "p" : 1.373917062874929
// },
// {
// "p" : 0.05451349290034214
// }
// ]
// }
您可能会推荐任何解决方案吗?我非常感谢有关此事的任何意见。非常感谢你!