13 Mode
(def numbers [1 2 2 3 3 3 4 4 4 4 5 5 5 5 5])numbers[1 2 2 3 3 3 4 4 4 4 5 5 5 5 5](frequencies numbers){1 1, 2 2, 3 3, 4 4, 5 5}(sort-by second (frequencies numbers))([1 1] [2 2] [3 3] [4 4] [5 5])(last (sort-by second (frequencies numbers)))[5 5](first (last (sort-by second (frequencies numbers))))5(defn mode [numbers]
(first (last (sort-by second (frequencies numbers)))))(mode numbers)5(mode [1 2 3 4 5 6])6Fixing the mode function
(defn mode [numbers]
(let [freqs (frequencies numbers)
max-freq (apply max (vals freqs))]
(filter #(= (second %) max-freq) freqs)))(mode numbers)([5 5])(mode [1 2 3 4 5 6])([1 1] [2 1] [3 1] [4 1] [5 1] [6 1])Extracting values from the mode function
(map first (mode numbers))(5)(map first (mode [1 2 3 4 5 6]))(1 2 3 4 5 6)(defn mode [numbers]
(let [freqs (frequencies numbers)
max-freq (apply max (vals freqs))]
(map first (filter #(= (second %) max-freq) freqs))))(mode numbers)(5)(mode [1 2 3 4 5 6])(1 2 3 4 5 6)(mode [1 1 2 2 3 3])(1 2 3)Return number if only single mode is present
(defn mode [numbers]
(let [freqs (frequencies numbers)
max-freq (apply max (vals freqs))]
(if (= (count (filter #(= (second %) max-freq) freqs)) 1)
(first (first (filter #(= (second %) max-freq) freqs)))
(map first (filter #(= (second %) max-freq) freqs)))))(mode [1 2 3 4 5 6])(1 2 3 4 5 6)(mode [3 1 1 2 2 3 3])3source: notebooks/mode.clj