我有一组成员记录,这些记录显示开始日期和结束日期。
以下是摘录:
id,start_date,end_date
2759,2010-10-19,2016-10-31
2760,2010-10-19,2014-03-31
2761,2010-10-19,2023-03-31
2762,2010-10-21,2012-10-31
2763,2010-10-23,2015-11-30
2764,2010-10-24,2012-10-31
2765,2010-10-25,2012-10-30
2766,2010-10-30,2012-10-31
2767,2018-09-19,2019-10-18
我希望根据每个特定年月中成员的记录数,将年月沿x编码为数据,并将年沿y进行计数。
如果以上内容不清楚,则另一个示例是“给定具有人口中个体出生和死亡日期的数据集,我如何创建显示人口每年增长/下降的图表”。
如果start_date <= yearmonth && end_date> = yearmonth,您似乎希望有条件计数,但是我不确定如何在vega-lite json中表达这一点。
谢谢!
答案 0 :(得分:2)
实现此目的的一种方法是折叠变换,然后是计算变换,然后是窗口变换。这是一个示例,其中包含一些生成的数值数据(vega editor):
{
"data": {
"values": [
{"start": 7, "end": 9},
{"start": 4, "end": 6},
{"start": 9, "end": 10},
{"start": 9, "end": 13},
{"start": 0, "end": 4},
{"start": 4, "end": 6},
{"start": 0, "end": 2},
{"start": 0, "end": 3},
{"start": 4, "end": 8},
{"start": 3, "end": 6}
]
},
"transform": [
{"fold": ["start", "end"]},
{"calculate": "datum.key == 'start' ? 1 : -1", "as": "added"},
{
"window": [{"op": "sum", "field": "added", "as": "total"}],
"sort": [{"field": "value"}]
}
],
"mark": "line",
"encoding": {
"x": {"type": "quantitative", "field": "value"},
"y": {"type": "quantitative", "field": "total"}
}
}