【问题标题】:Measure-object -average for values stored in percentage (%)以百分比 (%) 存储的值的测量对象平均值
【发布时间】:2017-08-23 13:48:03
【问题描述】:

我熟悉使用“测量对象”函数来计数和获取平均值等,但是,我很难使用它来获取基于以百分比形式存储在 csv 中的数据的平均值(% )

Platform    Cap Used %
P1          0%
P2          18%

我最初在脚本中包含逻辑,该逻辑使用常规方法“{0:P0}”生成 csv 以保存在 % 中

但是,当我现在尝试在“Cap Used %”数组上运行测量对象平均值时,我一遍又一遍地收到以下错误::

Measure : Input object "" is not numeric.
At line:1 char:36
+ $TempData | Select $_"Cap used %" |Measure -average
+                                    ~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidType: (:PSCustomObject) [Measure-       
 Object],PSInvalidOperationException
            + FullyQualifiedErrorId  :NonNumericInputObject,Microsoft.PowerShell.Commands.MeasureObjectCommand

我可以通过以下代码对相同的数据进行排序,但我无法通过 measure-object -average 运行它

$TempData | Select {[int]($_."Cap Used %" -replace '%')} 

我可能可以在没有 % 的情况下存储数据,但我宁愿保持原样。有没有一种 ez 方法来总结一堆百分比并获得平均百分比?当我将数据导入 excel 并选择列时,会显示预期的平均结果,所以我知道数据是好的,但是,我相信 excel 内置了一些额外的逻辑来自动检测正确的数据格式

感谢任何帮助

【问题讨论】:

    标签: excel powershell csv


    【解决方案1】:

    In general, when posting an example with xml or csv data, it is helpful to use here-strings to represent the data instead of referencing a file that others do not have.

    下一个代码 sn-p 按预期返回 8

    $hereStr=@'
    Platform,"Cap Used %"
    P1,0%
    P2,18%
    P3,6%
    '@
    
    $TempData = $hereStr | ConvertFrom-Csv
    (($TempData."Cap Used %").Replace('%','') | Measure-Object -Average).Average
    

    【讨论】:

    • 非常感谢!我会尽快尝试该代码并报告
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多