我正在尝试“透视”以下数据,尽管即使在 excel 中尝试它似乎也不起作用。我不确定我的逻辑是否正确。基本上我需要将数据集a转换为数据集b。
一个
日期 奖牌 值 1 值 2 值 3 值 4
2013-03-08 银 0 6052 0 0
2013-03-04 青铜 0 0 0 0
2013-03-04 青铜 0 0 0 0
2013-03-04 青铜 0 0 0 0
2013-03-04 青铜 0 1437 0 0
2013-03-01 青铜 0 0 240 0
2013-03-01 银 0 0 0 0
2013-03-01 青铜 0 0 0 0
2013-03-01 青铜 0 173 0 0
2013-03-08 银 0 0 0 271
2013-03-04 银 0 2547 0 0
2013-03-04 青铜 0 495 0 0
2013-03-04 黄金 279 0 0 0
2013-03-02 银 0 0 0 0
2013-03-01 青铜 0 0 0 0
2013-03-01 银 0 0 0 0
2013-03-01 青铜 0 0 0 0
2013-03-01 青铜 0 20 0 0
2013-03-03 银 0 0 0 0
乙
奖牌价值 1 价值 2 价值 3 价值 4
青铜 0 2125 240 0
黄金 279 0 0 0
银 0 8599 0 271
所以基本上我正在尝试按 MEDAL 分组并根据 MEDAL 过滤器对每个值列求和(MEDAL 是可变的,可能是 PURPLE、BLUE 等)。下面的尝试是完全错误的,我正在重用一些以前的代码,所以它可能是圆钉方孔领域,但我不知道如何去做,即使在逻辑上它现在让我感到困惑...... :(
任何帮助或建议将不胜感激
(defn- create-summary [data]
(->> data
(group-by :MEDAL)
vals
(map
(fn [recs]
(let [a (fn [b] (+ (filter #(= b(:MEDAL%)) recs)recs))]
{:MEDAL (:MEDAL (first recs))
:VALUE1sum (a :MEDAL)
:VALUE2sum (a :MEDAL)
:VALUE3sum (a :MEDAL)
:VALUE4sum (a :MEDAL)
})))
))