将百分比转换为范围[-1; 1]

时间:2017-01-24 10:10:06

标签: math powerbi powerquery m

我正在开发一个PowerBI项目。 我想将一列小数(百分比)转换为-1到1的范围。

这是我现在正在使用的表格:

FirstName | Score
Jack      | 0.75
John      | 0.50
Reese     | 0.00
Mike      | 1.00

期望的结果是:

FirstName | Score
Jack      | 0.50
John      | 0.00
Reese     | -1.00
Mike      | 1.00

我对这背后的数学感到不安。如果我得到那部分,我可以通过在PowerBI中使用m语言来实现它。

任何想法,建议?

2 个答案:

答案 0 :(得分:5)

这些分数实际上看起来不像百分比,它们更像是分数 - 例如,0.75的百分比将是75

因此,如果您正在讨论将0..1映射到-1..1,那么应用转换是一件简单的事情:

newVal = oldVal * 2 - 1

乘以2首先将其缩放到范围0..2,然后减法将其移动到范围-1..1

答案 1 :(得分:-5)

我认为您完全没有提出任何工作并要求免费解决方案。任何基本统计文本都将描述如何重新定义和缩放一组数据。但是,这将按照您的要求进行操作

use strict;
use warnings 'all';

use List::Util qw/ min max /;

my @data = <DATA>;
my ($min, $max, $delta);

{
    my @n = map /([\d.]+)\s*\z/, @data;

    ( $min, $max ) = ( min(@n), max(@n) );
    $delta = $max - $min;
}

for ( @data ) {
    s{ ( [\d.]+ ) (?= \s*\z ) }{ sprintf '%.2f', ( $1 - $min ) * 2 / $delta - 1 }xe;
    print;
}

__DATA__
FirstName | Score
Jack      | 0.75
John      | 0.50
Reese     | 0.00
Mike      | 1.00

输出

FirstName | Score
Jack      | 0.50
John      | 0.00
Reese     | -1.00
Mike      | 1.00