Here is a function which takes any list and creates a freq table, which can be printed unsorted, sorted by cases or items. It's supposed to mirror the proc freq in SAS.
Dirk def freq(seq,order='unsorted',prin=True): #order can be unsorted, cases, items freq={} for s in seq: if s in freq: freq[s]+=1 else: freq[s]=1 if prin==True: print 'Items=',len(seq),'Cases=',len(freq) print '------------------------' if order=='unsorted': for k in freq.keys(): print k,freq[k],float(freq[k])/len(seq) elif order=='cases': #http://blog.client9.com/2007/11/sorting-python-dict-by- value.html freq2=sorted(freq.iteritems(), key=lambda (k,v): (v,k),reverse=True) for f in freq2: print f[0],f[1],float(f[1])/len(seq) elif order=='items': for k in sorted(freq.iterkeys()): print k,freq[k],float(freq[k])/len(seq) print '------------------------' return freq #test import random rand=[] for i in range(10000): rand.append(str(int(100*random.random()))) fr=freq(rand) fr2=freq(rand,order='items') fr2=freq(rand,order='cases') -- http://mail.python.org/mailman/listinfo/python-list