mufuphlex / raqualizer
通过给定标准值和计算比率调整值的工具
0.1.0
2015-11-22 07:05 UTC
Requires
- php: >=5.3.9
Requires (Dev)
- phpunit/phpunit: >=4.5
This package is not auto-updated.
Last update: 2024-09-14 18:42:07 UTC
README
通过给定标准值和计算比率调整值的工具
Raqualizer
在您从不同来源获取数据时非常有用,您需要根据另一个数据集来校正数据集,但希望保留新的值在旧的比例中。
示例
让我们想象你有两个独立的统计数据源,包含关于交通的数据,比如 点击量 和 价格。
第二个来源的统计数据更不详细,但假设它是 价格 值的关键来源。
第一个来源更详细(例如,它包含关于交通类型的 点击量 和 价格 的详细数据),但那里的 价格 值与第二个来源不同。
Raqualizer
将帮助您根据第二个数据源编辑第一个数据源中的值
<?php use Mufuphlex\Raqualizer; require_once 'vendor/autoload.php'; // Init etalon values assumed to be correct $dataSource2Price = 200; $dataSource2Clicks = 60; // Init detailed values // Note the difference between 200 != (150 + 60) $dataSource1Traffic1Price = 150; $dataSource1Traffic2Price = 60; // Note the difference between 60 != (45 + 20) $dataSource1Traffic1Clicks = 45; $dataSource1Traffic2Clicks = 20; // Instantiate Raqualizer values to be corrected $valueSource1Traffic1Price = new Raqualizer\EqualizableValue($dataSource1Traffic1Price); $valueSource1Traffic2Price = new Raqualizer\EqualizableValue($dataSource1Traffic2Price); // Combine Raqualizer values to a Raqualizer Values Set $priceSet = new Raqualizer\EqualizableValueSet(); $priceSet ->addValue($valueSource1Traffic1Price) ->addValue($valueSource1Traffic2Price); // Instantiate Raqualizer processor $raqualizer = new Raqualizer\Raqualizer(); // Instantiate Raqualizer etalon value $etalonPrice = new Raqualizer\EtalonValue($dataSource2Price); // Process values $correctedPriceValues = $raqualizer->processSet($priceSet, $etalonPrice); // Ensure that the original values were corrected as expected: 143 + 57 = 200 print_r($correctedPriceValues); // Note that the values are float due to not round ratios, so in case of need you can round them later /* Array ( [0] => 142.85714285714 // ~= 143 [1] => 57.142857142857 // ~= 57 ) */ // And now we need to edit the clicks data with the same ratio which was applied to price $valueSource1Traffic1Clicks = new Raqualizer\EqualizableValue($dataSource1Traffic1Clicks); $valueSource1Traffic2Clicks = new Raqualizer\EqualizableValue($dataSource1Traffic2Clicks); $clicksSet = new Raqualizer\EqualizableValueSet(); $clicksSet ->addValue($valueSource1Traffic1Clicks) ->addValue($valueSource1Traffic2Clicks); $clicksSet->dependsOn($priceSet); $etalonClicks = new Raqualizer\EtalonValue($dataSource2Clicks); $correctedClicksValues = $raqualizer->processSet($clicksSet, $etalonClicks); // Ensure that the original clicks values were corrected as expected as well: 43 + 7 = 60 print_r($correctedClicksValues); /* Array ( [0] => 42.857142857143 // ~= 43 [1] => 17.142857142857 // ~= 17 ) */