名称

SimpleR::Stat 简单数据统计处理

说明

传入 scalar num / arrayref,计算 sum 求和, mean 均值, rate 比例 等

函数

实例参考xt子文件夹

calc_rate

计算比例

my $r = calc_rate(3, 4);
# $r = 0.75

calc_rate_arrayref

将数组中某些项求和,并计算比例,最后传入原来的数组

calc_fields : 指定数组中的项

rate_sub : 对计算出来的rate做进一步处理,例如 3/8 = 0.675,转换成 67.50

my $data = [ '2013-10-22', 'gym', 3, 4, 1 , 'china' ];
my $r = calc_rate_arrayref($data, 
        calc_fields => [ 2, 3, 4 ], 
        rate_sub => sub { sprintf("%.2f", 100*$_[0]) },
);
# $r =  [ '2013-10-22', 'gym',   3,     4,     1 , 'china' , 
#                         8, 37.50, 50.00, 12.50 ];

format_percent

将比例转换成百分比,例如 0.675 -> 67.50%

my $r = format_percent(0.675, "%.2f%%");
# $r = '67.50%'

calc_compare_rate

计算增量

my $r = calc_compare_rate(4, 7);
# $r = 0.75
my ($r2, $diff) = calc_compare_rate(4, 7);
# $r2 = 0.75, $diff = 3

sum_arrayref

数组求和

my $d = [ 1, 4, 3 ];
my $r = sum_arrayref($d);
# $r = 8

mean_arrayref

数组均值

my $d = [ 1, 4, 3 ];
my $r = mean_arrayref($d);
# $r = 2.66666667

median_arrayref

数组中位数

my $d = [ 1, 4, 3 ];
my $r = median_arrayref($d);
# $r = 3

uniq_arrayref

数组去重

my $d = [ 1, 1, 4, 4, 3 ];
my $r = uniq_arrayref($d);
# $r = [ 1, 3, 4 ] 

uniq_arrayref_cnt

数组去重后的元素个数

my $d = [ 1, 1, 4, 4, 3 ];
my $r = uniq_arrayref_cnt($d);
# $r = 3

conv_arrayref_to_hash

将arrayref转换为hash,注意重复的key会被覆盖掉,数据可能变少

my $data=[ ['a','b',3],['e','f',6], ['a','f',9]];
my $r = conv_arrayref_to_hash($data, [ 0, 1 ], 2);
# $r =  { a => { b => 3, f => 9 }, e => { f => 6 } },