是否有任何命令行工具可以接受来自标准输入的数字流(以 ascii 格式)并提供该流的基本描述性统计信息,例如最小值、最大值、平均值、中值、RMS、分位数等?欢迎使用命令行链中的下一个命令解析输出。工作环境是 Linux,但欢迎使用其他选项。
用于计算值流的基本统计数据的命令行工具
机器算法验证
描述性统计
计算统计
                    2022-01-16 01:32:07
                
                    
                
            
        4个回答
            你可以用R来做到这一点,这可能有点矫枉过正......
编辑 2:[哎呀,当我重新输入此内容时,看起来像其他人一样Rscript。] 我找到了一种更简单的方法。与 R 一起安装应该是Rscript,这意味着做你想做的事情。例如,如果我有一个包含bar数字列表的文件,每行一个:
Rscript -e 'summary (as.numeric (readLines ("stdin")))' < bar
将文件中的数字发送到 R 并在行summary上运行 R 的命令,返回如下内容:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    2.25    3.50    3.50    4.75    6.00 
您还可以执行以下操作:
Rscript -e 'quantile (as.numeric (readLines ("stdin")), probs=c(0.025, 0.5, 0.975))'
得到分位数。您显然可以使用以下内容切断第一行输出(包含标签):
Rscript -e 'summary (as.numeric (readLines ("stdin")))' < bar | tail -n +2
我强烈建议您首先在交互式 R 中做您想做的事情,以确保您的命令正确。在尝试这个时,我省略了右括号,Rscript 什么也不返回——没有错误消息,没有结果,什么也没有。
(作为记录,文件栏包含:
1
2
3
4
5
6
试试“st”:
$ seq 1 10 | st
N   min   max   sum   mean  stddev
10  1     10    55    5.5   3.02765
$ seq 1 10 | st --transpose
N       10
min     1
max     10
sum     55
mean    5.5
stddev  3.02765
您还可以看到五个数字摘要:
$ seq 1 10 | st --summary
min  q1    median   q3    max
1    3.5   5.5      7.5   10
你可以在这里下载:
(免责声明:我写了这个工具:))
R 提供了一个名为Rscript的命令。如果您只能在命令行上粘贴几个数字,请使用这一行:
Rscript -e 'summary(as.numeric(commandArgs(TRUE)))' 3 4 5 9 7
这导致
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
3.0     4.0     5.0     5.6     7.0     9.0 
如果要从标准输入中读取,请使用:
echo 3 4 5 9 7 | Rscript -e 'summary(as.numeric(read.table(file("stdin"))))'
如果标准输入上的数字由回车符分隔(即每行一个数字),请使用
Rscript -e 'summary(as.numeric(read.table(file("stdin"))[,1]))'
可以为这些命令创建别名:
alias summary='Rscript -e "summary(as.numeric(read.table(file(\"stdin\"))[,1]))"'
du -s /usr/bin/* | cut -f1 | summary
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
0.0     8.0    20.0    93.6    44.0  6528.0
其它你可能感兴趣的问题