使用 reduce 计算数据组内的数据组

正如标题所说,我正在尝试计算数据组中的数据组:我的逻辑是将所有数据分组为状态,然后将日期分组为年份。以便输出应如下所示:


state,year,count

mo,1910,2

in,1910,1

il,1910,3

or,1910,4

co,1910,2

nd,1910,1

...

mo,1911,5

in,1911,4

il,1911,6

or,1911,2

co,1911,8

我使用的 CSV 有更多需要的列,我只对列state和year. 我下面的代码不起作用,任何帮助都会很棒。


const countStates = filteredData.reduce((m, d) => {

    if(!m[d.year]){

      m[d.year] = {...d, count: 1};

      return m;

    }

    m[d.state];

    m[d.year];

    m[d.year].count += 1;

    return m;

},{});


const countedStates = Object.keys(countStates).map((k) =>  {

    const item  = countStates[k];

    return {

        state: item.state,

        year: item.year,

        count: item.count

    }

})

编辑


我正在使用的数据集示例:


datetime,city,state,country,shape,duration (seconds),duration (hours/min),comments,date posted,latitude,longitude 

10/10/1949 20:30,san marcos,tx,us,cylinder,2700,45 minutes,"This event took place in early fall around 1949-50. It occurred after a Boy Scout meeting in the Baptist Church. The Baptist Church sit",4/27/2004,29.8830556,-97.9411111

10/10/1949 21:00,lackland afb,tx,,light,7200,1-2 hrs,"1949 Lackland AFB&#44 TX.  Lights racing across the sky & making 90 degree turns on a dime.",12/16/2005,29.38421,-98.581082

10/10/1955 17:00,chester (uk/england),,gb,circle,20,20 seconds,"Green/Orange circular disc over Chester&#44 England",1/21/2008,53.2,-2.916667

10/10/1956 21:00,edna,tx,us,circle,20,1/2 hour,"My older brother and twin sister were leaving the only Edna theater at about 9 PM&#44...we had our bikes and I took a different route home",1/17/2004,28.9783333,-96.6458333

10/10/1960 20:00,kaneohe,hi,us,light,900,15 minutes,"AS a Marine 1st Lt. flying an FJ4B fighter/attack aircraft on a solo night exercise&#44 I was at 50&#44000&#39 in a "clean" aircraft (no ordinan",1/22/2004,21.4180556,-157.8036111

10/10/1961 19:00,bristol,tn,us,sphere,300,5 minutes,"My father is now 89 my brother 52 the girl with us now 51 myself 49 and the other fellow which worked with my father if he&#39s still livi",4/27/2007,36.5950000,-82.1888889


有只小跳蛙
浏览 159回答 1
1回答

陪伴而非守候

下面的代码获取带有年份的一组状态,并使用reduce我们获取按年份分组的每个状态的计数var data = [    { year: '1910', state: 'mo', country: 'us' },    { year: '1910', state: 'in', country: 'us' },    { year: '1910', state: 'il', country: 'us' },    { year: '1910', state: 'mo', country: 'us' },    { year: '1911', state: 'in', country: 'us' },    { year: '1911', state: 'il', country: 'us' },    { year: '1911', state: 'mo', country: 'us' },    { year: '1911', state: 'in', country: 'us' }];var organizedData = data.reduce((acc, val, index) => {  acc[val.state] = acc[val.state] || {};  acc[val.state][val.year] = (+acc[val.state][val.year] || 0) + 1;  return acc;}, {});console.log(organizedData);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript