This is my code for combining and grouping data from 2 CSV file.
const csv = require('csv-parser')
const fs = require('fs')
var matchesData = {}
var innData = []
var convertedObject = {}
function convertIntoObject(){
for (let i = 0; i < innData.length; i++) {
if(!convertedObject[innData[i].SEASON]){
convertedObject[innData[i].SEASON] = {}
}
if(!convertedObject[innData[i].SEASON][innData[i].BOWLER]){
convertedObject[innData[i].SEASON][innData[i].BOWLER] = {}
}
if(!convertedObject[innData[i].SEASON][innData[i].BOWLER].totalRuns &&
!convertedObject[innData[i].SEASON][innData[i].BOWLER].balls &&
!convertedObject[innData[i].SEASON][innData[i].BOWLER].economy
)
convertedObject[innData[i].SEASON][innData[i].BOWLER] =
{ "totalRuns": 0,
"balls": 0,
"economy": 0
}
convertedObject[innData[i].SEASON][innData[i].BOWLER] =
{ "totalRuns": Number(convertedObject[innData[i].SEASON][innData[i].BOWLER].totalRuns) + (innData[i].TOTAL_RUNS - innData[i].BYE_RUNS - innData[i].LEGBYE_RUNS),
"balls": Number(convertedObject[innData[i].SEASON][innData[i].BOWLER].balls) + 1,
"economy": (Number(convertedObject[innData[i].SEASON][innData[i].BOWLER].totalRuns) / (convertedObject[innData[i].SEASON][innData[i].BOWLER].balls / 6)).toFixed(2)
}
}
}
fs.createReadStream('matches.csv')
.pipe(csv())
.on('data', (data) => {
matchesData[data.MATCH_ID] = data.SEASON
})
.on('end', () => {
//console.log(matchesData)
});
fs.createReadStream('deliveries.csv')
.pipe(csv())
.on('data', (data) => {
innData.push({...data, "SEASON": matchesData[data.MATCH_ID]})
})
.on('end', () => {
convertIntoObject()
fs.writeFileSync("output.txt", JSON.stringify(convertedObject))
});
Output that’s generated is
{
"2008": {
"P Kumar": {
"totalRuns": 366,
"balls": 275,
"economy": "8.01"
},
"Z Khan": {
"totalRuns": 357,
"balls": 258,
"economy": "8.31"
},
},
"2009": {
"AA Noffke": {
"totalRuns": 366,
"balls": 275,
"economy": "8.01"
},
"JH Kallis": {
"totalRuns": 357,
"balls": 258,
"economy": "8.31"
},
}
}
Now I want to get top 10 teams for each year with best economy. I am not able to find a solution as to how to sort this data based on economy key and then filter top 10 teams.
I want this output also be updated in the following format:
{ "2008": [ ["P Kumar": { "totalRuns": 366, "balls": 275, "economy": "8.01" }], ["Z Khan": { "totalRuns": 357, "balls": 258, "economy": "8.31" }], ], "2009": [ ["AA Noffke": { "totalRuns": 366, "balls": 275, "economy": "8.01" }], ["JH Kallis": { "totalRuns": 357, "balls": 258, "economy": "8.31" }], ] }
You need to sign in to view this answers
Leave feedback about this