我正在开发一个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语言来实现它。
任何想法,建议?
答案 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