将百分比转换为范围 [-1;1]
convert percentage to range [-1;1]
我正在用 PowerBI 做一个项目。
我想将一列小数(百分比)转换为 -1 到 1 的范围。
这是我现在正在使用的table:
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.75
的百分比将是 75
。
因此,如果您正在谈论将 0..1
映射到 -1..1
,应用转换是一件简单的事情:
newVal = oldVal * 2 - 1
首先乘以 2 将其缩放到 0..2
范围内,然后减法将其移动到 -1..1
.
范围内
我认为您完全有权不提交任何工作并要求免费解决方案。任何基本的统计文本都会描述如何变基和缩放一组数据。但是,这会按照您的要求进行
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', ( - $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
我正在用 PowerBI 做一个项目。 我想将一列小数(百分比)转换为 -1 到 1 的范围。
这是我现在正在使用的table:
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.75
的百分比将是 75
。
因此,如果您正在谈论将 0..1
映射到 -1..1
,应用转换是一件简单的事情:
newVal = oldVal * 2 - 1
首先乘以 2 将其缩放到 0..2
范围内,然后减法将其移动到 -1..1
.
我认为您完全有权不提交任何工作并要求免费解决方案。任何基本的统计文本都会描述如何变基和缩放一组数据。但是,这会按照您的要求进行
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', ( - $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