我正在从CSV文件将数据接收到程序中,并且尝试按年份,然后按月份将数据分类为多维数组以从那里进一步聚合。
我每月遇到的麻烦是汇总,然后将其插入2D向量,除了12月和1月。十二月创建了自己的数组就好了,但是随后也添加了一月,所以我不知道为什么。
我一直在努力解决这个问题,直到我终于在计算出平均值之前制定出以下用于分离数据的函数,但是我决定先检查进入数组的数据,然后再运行问题。如果可以避免的话,我不想对这几个月进行硬编码。
谁能看到为什么将一月添加到十二月而不将其放入单独的向量中?
注意:这是使用自定义Vector类,因为我们不允许使用STL
void DATA::SeparateByMonth(Vector<Vector<DATA>>& byYear)
{
long year = data[0].date.GetYear(); //initially set the year to the first found
Vector<DATA> byMonth; //new vector to hold each month
int j = 1; // for month counting
for(int i = 0; i < data.length(); i++)
{
if(data[i].date.GetYear() == year)
{
if(data[i].date.GetMonth() == data[0].date.WhichMonth(j)) //WhichMonth has an array of months
{
byMonth.push_back(data[i]); // Add to Vector of Months
}
else
{
if(byMonth.length() > 0) //if vector contains data, add to ByYear
{
byYear.push_back(byMonth); //Add vector to 2D vector
}
byMonth.clear(); //clear the vector to start again
j++; //increment month
i--; //decrement test by one to retest that value
}
}
else
{
year = data[i].date.GetYear(); //change to the new year value
j = 1; //set the check back to January
i--; // decrement test by one to retest that value.
}
}
}
结果-2D向量中每个向量的长度
4月:4314
五月:4464
六月:4320
七月:4464
八月:4464
九月:4320
十月:4464
十一月:4315
十二月:8928 // //十二月汇总了十二月和一月,因此没有一月
2月:4032
3月:4464