У меня есть Excel 2000, Google Docs и последний доступный калькулятор для офиса. Я в поиске решения в любом из них, в идеале.
У меня есть мультимножество данных, описываемых строками пар (количество, значение). например
count, value
3, 1,
7, 2,
6, 3,
2, 4,
1, 5,
8, 6,
Это представляет собой мультисеть {1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6 , 6, 6, 6, 6}
Я хотел бы выполнить некоторую статистику по окончательному набору, например, AVERAGE() или MODE() в Excel. Как мне это сделать? Как «развернуть» пары (число, значение) в набор / массив, с которым может работать программа работы с электронными таблицами?
В настоящее время я могу делать только статистику по значениям в таблице, что, очевидно, не правильно.
Ниже приведена тривиальная реализация Python, о которой я говорю.
set_desc = [
#count, value
(3, 1),
(7, 2),
(6, 3),
(2, 4),
(1, 5),
(8, 6),
]
multiset = []
# [3] * 5 in python would make the list [3,3,3,3,3]
for (count, value) in set_desc:
print "Addding", [value] * count
multiset.extend([value] * count)
sorted_multiset = sorted(multiset)
i0 = (len(sorted_multiset)-1)/2
i1 = (len(sorted_multiset))/2
print "final values in multiset are", sorted_multiset
print "median value(s) lies at index", i0, i1
print ""
print "mean average is", float(sum(sorted_multiset, 0))/len(sorted_multiset)
print "median value is", float(sorted_multiset[i0] + sorted_multiset[i1])/2