多列数据的聚合操作你是不是也经常头疼?Matlab里的unique
和accumarray
配合用,其实就能轻松搞定多列聚合,真的是被低估的组合。
不需要写复杂的循环逻辑,靠unique
找出唯一组合,再用accumarray
按需聚合,比如@sum
、@mean
都能直接用。想聚合时间序列数据,比如从每小时合到每天,简直不要太方便。
聚合逻辑是这样的:除了一列,其他列都拿来确定“分组”,一列才是你要统计的值。比如你有年-月-日-数值
四列,就能按年月日汇总数值,效率高,还挺灵活。
再牛一点的还有个扩展版accumSeasonTS.m
,可以把数据按春分秋分那种“天文季节”来聚合,适合气候、水文之类的时序数据,真的是专业味儿一下就上来了。
函数调用也直接:
out = accumSeasonTS(data, @sum)
你要注意:data
得是个r x c
矩阵,函数fn
要用@
方式写。输出也是个r x c
的格式,逻辑清晰,不绕弯。
,嗯,这套方法适合做一些时序类数据的日常聚合。如果你用Matlab
做数据,尤其搞气象、金融、环境数据的,可以直接上手试试。