X-Git-Url: http://iramuteq.org/git?a=blobdiff_plain;ds=inline;f=tabfrequence.py;h=376c8bf557946b59534f6aaa1be59f3d50333765;hb=3da59380dc0b7589b4302a5f3fe9e31ce6362039;hp=f8961bff0c393ad7ad7af2de46e82aa7d10cfae6;hpb=a38c33bb022324119c865d990e7ef1f087c24780;p=iramuteq
diff --git a/tabfrequence.py b/tabfrequence.py
index f8961bf..376c8bf 100644
--- a/tabfrequence.py
+++ b/tabfrequence.py
@@ -13,19 +13,21 @@ from time import sleep
from analysematrix import AnalyseMatrix
from functions import exec_rcode, check_Rresult
from dialog import FreqDialog
-from PrintRScript import PrintRScript
+from PrintRScript import PrintRScript, FreqMultiScript
+from operator import itemgetter
class Frequences(AnalyseMatrix) :
def doparametres(self, dlg=None) :
if dlg is None :
return
else :
- dial = FreqDialog(self.parent, -1, self.tableau.get_colnames(), u"Fréquences", size=(350, 200))
+ dial = FreqDialog(self.parent, self.tableau.get_colnames(), u"Fréquences")
dial.CenterOnParent()
val = dial.ShowModal()
if val == wx.ID_OK :
- self.parametres['colsel'] = dial.list_box_1.GetSelections()
+ self.parametres['colsel'] = dial.m_listBox1.GetSelections()
self.parametres['header'] = dial.header
+ self.parametres['NA'] = dial.includeNA.GetValue()
else :
self.parametres = None
dial.Destroy()
@@ -55,12 +57,26 @@ class Frequences(AnalyseMatrix) :
compteur <- 1
""" % (sel, listfiles, titles)
+ if self.parametres['NA'] :
+ txt += """
+ countNA <- TRUE
+ """
+ else :
+ txt += """
+ countNA <- FALSE
+ """
+
txt += """
for (i in select) {
- freq <- table(dm[,i])
+ if (countNA) {
+ freq <- table(dm[,i], useNA = 'ifany')
+ } else {
+ freq <- table(dm[,i])
+ }
sumfreq <- sum(freq)
pour <- prop.table(as.matrix(freq), 2) * 100
sumpour <- sum(pour)
+ pour <- round(pour, 2)
ntable <- cbind(as.matrix(freq), pour)
graphout <- listfiles[compteur]
if (Sys.info()["sysname"]=='Darwin') {
@@ -144,4 +160,44 @@ class Frequences(AnalyseMatrix) :
with open(fileout, 'w') as f :
f.write(pretexte + texte)
#return fileout
+
+class FreqMultiple(Frequences):
+ def doanalyse(self):
+ select = self.parametres['colsel']
+ freq = self.tableau.countmultiple(select)
+ tot = sum([freq[forme][0] for forme in freq])
+ freq = [[forme, freq[forme][0], `round((float(freq[forme][0])/tot)*100, 2)`,`len(list(set(freq[forme][1])))`, `round((float(len(list(set(freq[forme][1]))))/self.tableau.rownb)*100,2)`] for forme in freq]
+ freq = sorted(freq, key=itemgetter(1), reverse=True)
+ freq = [[line[0], `line[1]`, line[2], line[3], line[4]] for line in freq]
+ freq.insert(0, [u'mod', 'freq', 'percent of total', 'row number', 'percent of rows'])
+ self.freq = freq
+ with open(self.pathout['frequences.csv'], 'w') as f :
+ f.write('\n'.join(['\t'.join(line) for line in freq]))
+ self.rscript = FreqMultiScript(self)
+ self.rscript.make_script()
+ self.doR(self.rscript.scriptout)
+ self.dolayout()
+
+ def dolayout(self):
+ pretexte = u'''
+
+
\nFréquences
+
+ ''' % self.parent.SysEncoding
+ txt = """
+ \n\n
+
+ """
+ txt += ' | '.join([' | '.join(line) for line in self.freq]) + ' |
|
'
+ txt += ' | |
' % (os.path.basename(self.pathout['barplotfreq.png']), os.path.basename(self.pathout['barplotrow.png']))
+ txt += "\n"
+ with open(self.pathout['resultats.html'], 'w') as f :
+ f.write(pretexte + txt)
+
+
+
+
+
+
+
\ No newline at end of file