Re: Cross tabulation - someone please help if you can
- From: "rn29" <reuben.nantogmah@xxxxxxxxx>
- Date: 28 Apr 2005 17:51:58 -0700
Thanks!
your thoughts are good but I think I failed to properly communicate the
problem. Now I am forced to post the code and perhaps that will help
see what i am trying to do. The sample table I provided is actually
what the final output should look like except the percent calculation
needs to be right. I am posting here the main method. Everything works
well except the first row output in the percent column all resolve to
100% and while debuging, I have determined that most of the percent
values are not even being innitialized. Where is the problem coming
from?
public static void main(String[] args) throws IOException{
//read an array of fall cohorts
File inFile = new File(args[0]);
ArrayList<FallCohorts> fallcohort = new ArrayList<FallCohorts>();
try{
BufferedReader in = new BufferedReader(new FileReader(inFile));
String line = null;
while((line = in.readLine()) != null){
FallCohorts cohort = new FallCohorts();
cohort.readData(line);
fallcohort.add(cohort);
}
in.close();
}
catch(EOFException e){
e.printStackTrace();
}
final String NOT_IN_ATTENDANCE = "NOTA";
final String GRADUATED = "GRAD";
final String ENROLLED_SAME_PROGRAM = "SMAJ";
final String ENROLLED_OTHER_PROGRAM = "OMAJ";
final String TOTAL = "TOTAL";
String [] rowNames = new String[5];
rowNames[0] = ENROLLED_SAME_PROGRAM;
rowNames[1] = ENROLLED_OTHER_PROGRAM;
rowNames[2] = GRADUATED;
rowNames[3] = NOT_IN_ATTENDANCE;
rowNames[4] = TOTAL;
Hashtable [] h = new Hashtable[13];
//initialize array
for(int i = 0; i < h.length; i++){
h[i] = new Hashtable();
h[i].put(ENROLLED_SAME_PROGRAM, new TabulateTerm());
h[i].put(ENROLLED_OTHER_PROGRAM, new TabulateTerm());
h[i].put(GRADUATED, new TabulateTerm());
h[i].put(NOT_IN_ATTENDANCE, new TabulateTerm());
h[i].put(TOTAL, new TabulateTerm());
//check keys are innitializing correctly
// Enumeration e = h[i].keys();
//while(e.hasMoreElements()){
//System.out.println(i + " " + e.nextElement());
//}
}
//Loop and tabulate
TabulateTerm row, columnTotal;
for(FallCohorts f : fallcohort){
//column 1
if(f.getCohortStartYear() == f.getYearTerm()){
row = (TabulateTerm) h[0].get(f.getGroup());
columnTotal = (TabulateTerm) h[0].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber() + 1);
columnTotal.setNumber(columnTotal.getNumber() + 1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 2
else if((f.getCohortStartYear() + 8) == f.getYearTerm()){
row = (TabulateTerm) h[1].get(f.getGroup());
columnTotal = (TabulateTerm) h[1].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 3
else if((f.getCohortStartYear()+ 10) == f.getYearTerm()){
row = (TabulateTerm) h[2].get(f.getGroup());
columnTotal = (TabulateTerm) h[2].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 4
else if((f.getCohortStartYear()+ 18) == f.getYearTerm()){
row = (TabulateTerm) h[3].get(f.getGroup());
columnTotal = (TabulateTerm) h[3].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 5
else if((f.getCohortStartYear()+ 20) == f.getYearTerm()){
row = (TabulateTerm) h[4].get(f.getGroup());
columnTotal = (TabulateTerm) h[4].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 6
else if((f.getCohortStartYear()+ 28) == f.getYearTerm()){
row = (TabulateTerm) h[5].get(f.getGroup());
columnTotal = (TabulateTerm) h[5].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 7
else if((f.getCohortStartYear()+ 30) == f.getYearTerm()){
row = (TabulateTerm) h[6].get(f.getGroup());
columnTotal = (TabulateTerm) h[6].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 8
else if((f.getCohortStartYear()+ 38) == f.getYearTerm()){
row = (TabulateTerm) h[7].get(f.getGroup());
columnTotal = (TabulateTerm) h[7].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 9
else if((f.getCohortStartYear()+ 40) == f.getYearTerm()){
row = (TabulateTerm) h[8].get(f.getGroup());
columnTotal = (TabulateTerm) h[8].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 10
else if((f.getCohortStartYear()+ 48) == f.getYearTerm()){
row = (TabulateTerm) h[9].get(f.getGroup());
columnTotal = (TabulateTerm) h[9].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 11
else if((f.getCohortStartYear()+ 50) == f.getYearTerm()){
row = (TabulateTerm) h[10].get(f.getGroup());
columnTotal = (TabulateTerm) h[10].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 12
else if((f.getCohortStartYear()+ 58) == f.getYearTerm()){
row = (TabulateTerm) h[11].get(f.getGroup());
columnTotal = (TabulateTerm) h[11].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
//column 13
else if((f.getCohortStartYear()+ 60) == f.getYearTerm()){
row = (TabulateTerm) h[12].get(f.getGroup());
columnTotal = (TabulateTerm) h[12].get(TOTAL);
row.setTerm(f.getYearTerm());
row.setGroup(f.getGroup());
row.setNumber(row.getNumber()+1);
columnTotal.setNumber(columnTotal.getNumber()+1);
row.setPercent(row.getNumber()/columnTotal.getNumber());
columnTotal.setPercent(100);
}
}
//print heading row
for(int i = 0; i < rowNames.length; i++){
System.out.print(rowNames[i] + "\t");
//print row data
for(int j = 0; j < h.length; j++){
row = (TabulateTerm)h[j].get(rowNames[i]);
System.out.print(row.toString());
}
System.out.println();
}
}
.
- Follow-Ups:
- Re: Cross tabulation - someone please help if you can
- From: Ross Bamford
- Re: Cross tabulation - someone please help if you can
- References:
- Cross tabulation - someone please help if you can
- From: rn29
- Re: Cross tabulation - someone please help if you can
- From: Ross Bamford
- Cross tabulation - someone please help if you can
- Prev by Date: Re: Cross tabulation - someone please help if you can
- Next by Date: Re: --really newbie-- most frequent character
- Previous by thread: Re: Cross tabulation - someone please help if you can
- Next by thread: Re: Cross tabulation - someone please help if you can
- Index(es):