RHEL 的 R 轻量级替代品?

RHEL 的 R 轻量级替代品?

我想使用 R 对日志文件信息进行一些统计分析,但发现即使是“有限”的 R-core RPM 也有很多依赖项尚未安装。我不想为了外围需求而安装这么多软件包。

是否有适用于 RHEL 6 上简单统计分析的轻量级替代方案?我有一个 R 脚本,它在 stdin 上接受大量值(每行一个值),并打印出最小值、最大值、平均值、中位数、95 百分位数和标准差。

为了了解更多背景信息,我使用 grep 和 awk 在我们的 Web 服务器日志文件中查找特定路径的 GET 请求,获取响应时间,并计算上面列出的指标,以衡量对 Web 应用程序更改对性能的影响。

我不需要任何绘图功能,只需要简单的计算。我是否忽略了什么?

答案1

使用 pythonNumPy您应该能够使用yum install numpy或轻松安装该软件包pip install numpy

import numpy
n = numpy.random.rand(100)
print 'min:', n.min()
print 'max:', n.max()
print 'mean:', n.mean()
print 'median:', numpy.median(n)
print '95th:', numpy.percentile(n, 95)
print 'stddev:', n.std()

这将节省您从头开始重新实现基本统计的时间。一般来说,Python 具有NumPy科学是 R 的一个功能丰富的替代品,而且通常还具有更好的性能

另外,您不必编写自己的日志文件解析grep,而是awk可以使用以下命令:pylogsparser它是“一个包含一组可立即使用的解析器(DHCPd、Squid、Apache 等)的日志解析器库”。

答案2

以下是最小值、最大值、总计、平均值和中位数awk

BEGIN {
    min="unset"
    max=0
}


{
    values[NR] = $1

    total += $1
    average = total/NR

    if ($1 > max) max = $1
    if (min == "unset" || $1 < $min) min = $1
}

END {
    median=values[int(NR/2)]

    print "MIN:", min
    print "MAX:", max
    print "TOTAL:", total
    print "MEAN:", average
    print "MEDIAN:", median
}

标准差和 95 百分位数留给读者作为练习。

答案3

任何编程/脚本语言(例如 Perl、Python 或 Ruby)都可以轻松完成此操作,并且bc可用。

相关内容