代码之家  ›  专栏  ›  技术社区  ›  Charles R

JSON解析-使用JQ获取每个组的平均值

  •  0
  • Charles R  · 技术社区  · 7 年前

    {
      "data": [  
        {"date": "2018-08-22","value": 3},
        {"date": "2018-08-30","value": 5},
        {"date": "2018-09-01","value": 5},
        {"date": "2018-09-22","value": 9},
        {"date": "2018-09-28","value": 4},
        {"date": "2018-10-18","value": 2},
        {"date": "2018-10-23","value": 1}
      ]
    }
    

    我想得到每个月的平均值。 我的预期输出如下:

    {
      "data": [  
        {"month": "2018-08","avg": 4},
        {"month": "2018-09","avg": 6},
        {"month": "2018-10","avg": 3}
      ]
    }
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   peak    7 年前

    这个问题几乎和我的一样

    JSON parsing - group by date range with JQ

    这里给出的解决方案可以很容易地适应这里的问题:

    def bucket: sub("-\\d+$"; "");
    
    .data
    | reduce .[] as $pair ({};
        .[$pair.date | bucket] += [$pair.value])
    | {data: [to_entries[] | {month: .key, avg: (.value| add/length)}]}
    
    推荐文章