Skip to content

Instantly share code, notes, and snippets.

@clyce
Last active August 29, 2015 14:05
Show Gist options
  • Save clyce/41d15ebdc12ef92b8735 to your computer and use it in GitHub Desktop.
Save clyce/41d15ebdc12ef92b8735 to your computer and use it in GitHub Desktop.
(def test-vec
[{:age 14 :gender :female}
{:age 15 :gender :male}
{:age 17 :gender :female}
{:age 13 :gender :male}])
(def test-vec-2
[{:age 12 :gender :female}
{:age 18 :gender :male}
{:age 23 :gender :female}
{:age 9 :gender :male}])
(def test-vec-3
[{:age 9 :gender :female}
{:age 22 :gender :male}
{:age 20 :gender :female}
{:age 5 :gender :male}])
(map (partial map :age) [test-vec test-vec-2 test-vec-3])
;=> ((14 15 17 13) (12 18 23 9) (9 22 20 5))
(map (comp (partial apply hash-map)
(partial mapcat (fn [[k v]] [k (count v)]))
(partial group-by identity))
((juxt (partial map :age) (partial map :gender))
test-vec))
;=> ({15 1, 13 1, 17 1, 14 1} {:female 2, :male 2})
(def generate-count
(comp (partial apply hash-map)
(partial mapcat (fn [[k v]] [k (count v)]))
(partial group-by identity)))
(generate-count [:apple :pear :apple :berry :pear :berry])
;=> {:apple 2, :pear 2, :berry 2}
(def generate-counts
(partial map generate-count))
(generate-counts [[:apple :pear :apple :berry :pear :berry]
[:tom :jerry :tom :tom :jerry :alice]
[1 3 2 4 3 1 1 4 2]])
;=> ({:apple 2, :pear 2, :berry 2} {:alice 1, :tom 3, :jerry 2} {1 3, 4 2, 3 2, 2 2})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment