【问题标题】:Best way in the shell to do basic statistics?在 shell 中进行基本统计的最佳方式?
【发布时间】:2010-11-09 20:06:53
【问题描述】:

现代 Unix shell 环境有很多好东西,我需要的东西几乎总是安装在我的机器上或快速下载;麻烦只是找到它。在这种情况下,我试图找到基本的统计操作。

例如,现在我正在设计一个基于爬虫的应用程序的原型。感谢 wget 加上其他一些好东西,我现在有几十万个文件。因此,我可以估计对数十亿个文件执行此操作的成本,我想获得超过一定限制的文件大小的平均值和中位数。例如:

% ls -l | perl -ne '@a=split(/\s+/); next if $a[4] <100; print $a[4], "\n"' > sizes
% median sizes
% mean sizes

当然,我可以用一点点 perl 或 awk 编写自己的中位数和均值位。但是是不是已经有一些对新手友好的软件包可以做到这一点以及其他更多功能?

【问题讨论】:

    标签: unix r shell statistics


    【解决方案1】:

    你能安装R 吗?那么littler 及其r 命令可以提供帮助:

    ~/svn/littler/examples$ ls -l . | awk '!/^total/ {print $5}' 
    87
    1747
    756
    988
    959
    871
    ~/svn/littler/examples$ ls -l . | awk '!/^total/ {print $5}' | ./fsizes.r 
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
         87     785     915     901     981    1750 
    
      The decimal point is 3 digit(s) to the right of the |
    
      0 | 1
      0 | 89
      1 | 00
      1 | 7
    
    ~/svn/littler/examples$ cat fsizes.r 
    #!/usr/bin/r -i
    
    fsizes <- as.integer(readLines())
    print(summary(fsizes))
    stem(fsizes)
    

    这是我们之前使用过的示例,因此 R 函数 summary() 包含 median()mean() 以及类似的 ascii-art stem 图。概括为只调用median()mean() 当然非常简单。

    【讨论】:

    • 谢谢!一个快速的“sudo aptitude install littler”,我就去参加比赛了。这太棒了!
    • 太棒了!这正是它的使用方式。如果您有 R 问题,请在 [r] 标记下发布,这很活跃。我刚刚在你上面的问题中添加了 [r] 标签——希望你不介意。
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    相关资源
    最近更新 更多