|
|
|
|
|
by heartofgold
2497 days ago
|
|
Here is an example to massage/manipulate CSV data. Stolen from the README page for a clojure CSV parsing library (https://github.com/clojure/data.csv) (defn read-column [reader column-index]
(let [data (read-csv reader)]
(map #(nth % column-index) data)))
(defn sum-second-column [filename]
(with-open [reader (io/reader filename)] ; Read in the CSV file (streaming / lazily)
(->> (read-column reader 1) ; Convert to just the first column of data.
(drop 1) ; Drop the first row (the CSV header)
(map #(Double/parseDouble %)) ; convert each string in this column into double
(reduce + 0)))) ; sum the result
Because it's lazy, this code should work regardless of how large the CSV file. |
|