public void run() throws IOException
{
CSVFileReader in = new CSVFileReader(inCSV, ',');
CSVFileWriter out = new CSVFileWriter(outCSV, ',');
Vector<String> fields = in.readFields();
int k=0;
while(fields!=null)
{
fields.remove(0);
fields.remove(0);
fields.remove(0);
if (k == 0)
{
out.writeFields(fields);
for(int i=0; i < NO_CLUSTERS; i++)
{
clusters.add(new Vector<Double>(fields.size()));
for(int j=0; j < fields.size(); j++)
{
clusters.get(i).add(0.0);
}
}
}
else
{
int cluster = Integer.parseInt(fields.get(fields.size()-1).substring(7));
if(cluster >= NO_CLUSTERS || cluster < 0)
{
continue;
}
clusters.get(cluster).set(fields.size()-1, clusters.get(cluster).get(fields.size()-1) + 1);
for(int i=0; i < fields.size()-1; i++)
{
Double word = Double.parseDouble(fields.get(i));
clusters.get(cluster).set(i, clusters.get(cluster).get(i) + word);
}
}
fields = in.readFields();
k++;
//if(k>1000) break;
}
for(int i=0; i < NO_CLUSTERS; i++)
{
Vector<String> newFields = new Vector<String>();
Double noInstances = clusters.get(i).get(clusters.get(i).size()-1);
for(int j=0; j < clusters.get(i).size() - 1; j++)
{
newFields.add((new Double(
clusters.get(i).get(j) / noInstances
)).toString());
}
newFields.add((new Double(i)).toString());
out.writeFields(newFields);
}
in.close();
out.close();
}