我有50个应用程序中的每一个都有两个日期列(startYear和endYear)。最早的startYear是1994年,最新的endYear是2030年。
我想将时间小部件条形图添加到现有的DC仪表板中。从1994年到2030年,每年将有一个酒吧,每个酒吧应显示该年度现有的应用程序数量。我的目标是在我的crossfilter组中使用以下数据结构:
group(36) = [
{key:1994, value:1},
{key:1995, value:4},
{key:1996, value:5},
{key:1997, value:10},
{key:1998, value:30},
... etc
]
(实际上,密钥需要有一个日期数据类型,但你明白我的意思。)
通常我会有一个名为year的字段并在其上创建一个维度。但实际上从1994年到2030年没有全年价值的字段。所以我制作了假数据'。目前我正在创建假字段,称为1994年,1995年等,在我的数据上运行:
data.forEach(function(d){
for (var i=1994; i<2031; i++) {
if (i>=d.start && i<=d.end) {
d[i]=1;
} else {
d[i]=0;
}
}
}
我为那一年存在的应用分配1,为那些不存在的应用分配0。这很好用。但是现在我需要将36个字段组合成一个维度,使36个字段成为维度的不同键。在这一点上,我被卡住了。我一直得到:关键:{1994:1,1995:4,1996:5 ......等}或类似于数组。最新努力:
var timeDimension = facts.dimension(function(d){ return {
1994:d[1994], 1995:d[1995], 1996:d[1996], 1997:d[1997], 1998:d[1998], 1999:d[1999],
2000:d[2000], 2001:d[2001], 2002:d[2002], 2003:d[2003], 2004:d[2004], 2005:d[2005],
2006:d[2006], 2007:d[2007], 2008:d[2008], 2009:d[2009], 2010:d[2010], 2011:d[2011],
2012:d[2012], 2013:d[2013], 2014:d[2014], 2015:d[2015], 2016:d[2016], 2017:d[2017]
}; });
是否有人知道是否可以通过这种方式将多个字段组合到一个维度中?也许我需要更改虚假数据,例如每个应用程序的单个字段数组,如[0,0,0,1,1,1,1 ...]。但是,如果我这样做,我如何在1994 - 2030年产生维度,当这些维度不存在于任何地方?
我最糟糕的情况是创建额外的行,因此每个数据点重复35次,持续不同年份。我想避免这种情况,但不知道如何。
感谢您的帮助
艾玛