2016-09-21 91 views
1

我有一個列表,其中有像(12,23,34,33,34,45,56 ......)幾乎200個人的年齡。我想分組他們(10-20)(21-30)(31-40)....(91-100)年齡組。如何使用clojure將特定範圍內的年齡分組?

如何在clojure中做到這一點。

謝謝

+1

你能顯示一些代碼嗎?你的列表是什麼樣子的,你如何表示「年齡」,你如何分組年齡段等等。 – glts

回答

4

這裏有一個實施的關鍵功能是group-byquot

(defn group-by-tens [numbers] 
    (->> numbers (group-by #(quot % 10)) 
    (sort-by first) 
    (map second))) 

例子:

(group-by-tens [15 28 35 6 9 37 33 47 11 38 4 27 49 47 38 20 36 49 27 30]) 
=> ([6 9 4] [15 11] [28 27 20 27] [35 37 33 38 38 36 30] [47 49 47 49]) 
+0

謝謝你......奇妙的工作! – joey

+0

提示:在REPL中運行'(apropos「group」)',你會看到'clojure.core/group-by'彈出。 –

+0

是的...試了一下..真的很有幫助。非常感謝! – joey

2

另外,如果你的年齡值進行排序(像從你的問題的例子),你可以分割他們(或其他排序和分區):

user> (partition-by #(quot % 10) 
        [1 2 3 4 10 12 16 23 27 29 33 34 45 59 71 72]) 
;;=> ((1 2 3 4) (10 12 16) (23 27 29) (33 34) (45) (59) (71 72))