def stats(file, columns, median = false)
	#med, avg, min, max
	sum = [0] * columns.length
	min = [nil] * columns.length
	max = [nil] * columns.length
	# sorted = columns.map { SortedSet.new }
	values = [[]] * columns.length if median
	counter = 0
	
	IO.foreach(file) { |row|
		counter += 1
		data = row.split(',')
		unless data.first.start_with? 'time'
			columns.each_with_index { |c_id, i|
				value = data[c_id].to_f
				values[i] << value if median
				sum[i] += value
				min[i] = value if min[i].nil? || value < min[i]
				max[i] = value if max[i].nil? || max[i] < value
			}
			#h.write "#{row.strip},#{data.join(',')}\n"
		end
	}
	
	raise "File was empty!" unless counter > 0
	
	result = {
		'sum' => sum,
		'avg' => sum.map { |i| i / counter },
		'min' => min,
		'max' => max
	}
	
	if median
		values.map! { |set| set.sort } # might take a while..
		result['med'] = values.map { |set|
			case counter % 2
				when 0
					(set[counter / 2 - 1] + set[counter / 2]) / 2
				when 1
					set[counter / 2]
			end
		}
	end
	
	return result
end
