Emulate underscore.js
*********************


filter
======

agate's "Table.where()" functions exactly like Underscore's "filter".

   new_table = table.where(lambda row: row['state'] == 'Texas')


reject
======

To simulate Underscore's "reject", simply negate the return value of
the function you pass into agate's "Table.where()".

   new_table = table.where(lambda row: not (row['state'] == 'Texas'))


find
====

agate's "Table.find()" works exactly like Underscore's "find".

   row = table.find(lambda row: row['state'].startswith('T'))


any
===

The "Any" aggregation works like Underscore's "any".

   true_or_false = table.aggregate(Any('salaries', lambda d: d > 100000))

You can also use "Table.where()" to filter to columns that pass the
truth test.


all
===

The "All" aggregation works like Underscore's "all".

   true_or_false = table.aggregate(All('salaries', lambda d: d > 100000))
