Monday, July 02, 2007

Anket Verilerini Siniflandirma

Groovy ile anket sonuçlarını sınıflandıran bir program yazdım.


package com.shibi.util.text.ölçek

int ANAHTAR_SATIR_NO = 1
String KLASOR = 'resources/ölçek/Hareket ve Kuvvet 2/'
String[] cevapAnahtarı = new File(KLASOR + '00.txt')
.readLines()[ANAHTAR_SATIR_NO]
.split(/,/)
println cevapAnahtarı.size()
StringBuffer out = new StringBuffer()
new File(KLASOR + '01.txt').eachLine { line ->
def cevaplar = line.split(/,/)
def soru = 1
for( cevap in cevaplar ) {
out << olumlulukDeğeri(cevap, soru, cevapAnahtarı) << virgul(soru)
soru++
}
}
def output = new File(KLASOR + '02.txt')
output.write(out.toString())


String olumlulukDeğeri(String cevap, int soru_no, String[] cevapAnahtarı) {
switch(cevap) {
case 'A' : return (cevapAnahtarı[soru_no-1] == '1') ? '1' : '-1'
case 'B' : return (cevapAnahtarı[soru_no-1] == '1') ? '-1' : '1'
case 'C' : return '0'
case 'D' : return 'D'
default : return 'D'
}
}

String virgul(int soru_no) {
(soru_no % 30) ? ',' : '\n'
}


3 tane dosya var: 00.txt, 01.txt ve 02.txt

00.txt dosyası cevap anahtarı. Bu anket tutum ölçmeye yönelik olduğundan, her bir sorunun olumlu mu, olumsuz mu tutum içerdiğini belirtir.

01.txt elimizdeki ham veriler. Bunlar anketlere verilen yanıtlardır.
02.txt verilerin sınıflandırılmış hali. Bu örnekte 3'lü Likert tipi ölçek kullanıldığından, veriler -1, 0 veya +1 olarak sınıflandırılmaktadır.

No comments: