Grouping data with $group-by
Datasets often come with an inherent structure. Two or more rows might have the same value in one column, and we might want to leverage that by grouping those rows together in our analysis.
Getting ready
First, we'll need to declare a dependency on Incanter in the project.clj file:
(defproject inc-dsets "0.1.0"
:dependencies [[org.clojure/clojure "1.6.0"]
[incanter "1.5.5"]
[org.clojure/data.csv "0.1.2"]])Next, we'll include Incanter core and io in our script or REPL:
(require '[incanter.core :as i]
'[incanter.io :as i-io])For data, we'll use the census race data for all the states. You can download it from http://www.ericrochester.com/clj-data-analysis/data/all_160.P3.csv.
These lines will load the data into the race-data name:
(def data-file "data/all_160.P3.csv") (def race-data (i-io/read-dataset data-file :header true))
How to do it…
Incanter lets you group rows for further analysis or to summarize them with the $group...