#include"dataClean.h"
void twh::getCompleteData(std::ifstream &Data,std::ofstream& registerTable,std::set<unsigned int> serialNumberOfChosenFeature, std::string retFilePath,std::size_t sizeOfindication) {
using serialNumber_t = unsigned int;
//set system format
twh::format systemReady({ "font-green" });
//Generate new file name
Data.seekg(0, std::ios::beg);
std::string line;
Data >> line;
auto dataHead = twh::getStringBetweenCharacter(line, ",");
std::string retFileName;
std::size_t sizeOfserialNumberOfChosenFeature = serialNumberOfChosenFeature.size();
std::size_t count = 0;
for (auto &e : serialNumberOfChosenFeature) {
++count;
retFileName += dataHead[e];
if(count!=sizeOfserialNumberOfChosenFeature) retFileName += "-";
}
//Create new file to save result
retFilePath += retFileName;
retFilePath += ".csv";
std::ofstream retFile;
twh::loadFile(retFile, retFilePath);
//processing data and write new file
for (serialNumber_t i = 0; i < sizeOfindication; ++i) {
serialNumberOfChosenFeature.insert(i);
}
twh::writeCSV(retFile, dataHead, serialNumberOfChosenFeature);
std::size_t countCorrectLine = 0;
while (Data) {
Data >> line;
auto dataLine = twh::getStringBetweenCharacter(line, ",");
#ifdef DEBUG
systemReady.prompt({ "Ready to process : \n" });
for (auto &e : dataLine) {
std::cout << e << " ";
}
std::cout << std::endl;
//system("pause");
#endif // DEBUG
bool correctFlag = 1;
for (auto &e : serialNumberOfChosenFeature) {
if (dataLine[e].empty()) {
correctFlag = 0;
break;
}
}
if (correctFlag) {
twh::writeCSV(retFile, dataLine, serialNumberOfChosenFeature);
++countCorrectLine;
}
}
//Register
if(countCorrectLine>=300) //set
registerTable << retFilePath <<"\n";
systemReady.prompt({ "Generate ",retFileName," successfully :",std::to_string(countCorrectLine)," piece(s) of complete data.\n" });
retFile.close();
Data.clear();
return;
}
一个数据清理的备份
最新推荐文章于 2024-07-24 20:44:05 发布