名称
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 } },