Clojure - 按两个值分组,依靠特定的关键字

时间:2014-01-16 14:53:55

标签: clojure count group-by

我有一个xml文件,我已经读过并在我的编辑器上编入索引。我有三个状态',它们在xml文件中表示 - GOOD,AVERAGE,POOR;它们也以DD / MM / YYYY格式的日期编制索引。

我要做的是最初按月分组,因此从我已成功完成的日期开始剥离月份,然后再次循环并按月计算“好”状态。

我会假设我必须按月份和状态进行分组,然后计算“好”的出现,虽然我似乎陷入了某个地方......到目前为止我已经开发了以下内容,希望我只是需要稍微调整一下!

        ...data fed in from xml...
        data (doall (get-records (xml/parse is)))

        loopA (for [flop data]
        {
           :STATUS(:QUALITY_STATUS flop)
           :MONTH(get (split (:DATE flop)  #"/") 1)
        })

        x(group-by #(select-keys %[:MONTH :STATUS]) loopA)

        loopB (str-join \newline (for [floop x]
        {
            :MONTH_STAMP (second floop)
            :Q_STATUS (if (= :STATUS "GOOD") (second floop))
            :GOOD_QUAL (count :Q_STATUS)
        }))

理想情况下,我最终想要的是三列数据,如下所示:

月 - 质量 - 计数

01 ------- GOOD ----- 1

02 ------- GOOD ----- 5

...

12 ------- GOOD ----- 3

提前致谢! :)

0 个答案:

没有答案