Existe alguma ferramenta de linha de comando que aceite o fluxo de números (no formato ascii) da entrada padrão e forneça as estatísticas descritivas básicas para esse fluxo, como min, max, média, mediana, RMS, quantis, etc? A saída é bem-vinda para ser analisável pelo próximo comando na cadeia de linha de comando. O ambiente de trabalho é o Linux, mas outras opções são bem-vindas.
27
Respostas:
Você pode fazer isso com o R , que pode ser um pouco exagerado ...
EDIÇÃO 2: [OOPS, parece que alguém bateu com o Rscript enquanto eu estava redigitando isso.] Encontrei uma maneira mais fácil. Instalado com o R deve ser o Rscript, que serve para fazer o que você está tentando fazer. Por exemplo, se eu tiver um arquivo
bar
que tenha uma lista de números, um por linha:Irá canalizar esses números para R e executar o
summary
comando de R nas linhas, retornando algo como:Você também pode fazer algo como:
para obter quantis. E você poderia obviamente cortar a primeira linha de saída (que contém etiquetas) com algo como:
Eu recomendo fazer o que você deseja no R interativo primeiro, para garantir que você tenha o comando correto. Ao tentar isso, deixei de fora os parênteses de fechamento e o Rscript não retorna nada - nenhuma mensagem de erro, nenhum resultado, apenas nada.
(Para o registro, a barra de arquivos contém:
fonte
R
comandos?foo
que continha asummary (as.numeric (readLines()))
primeira linha e, em seguida, um item de dados numéricos por linha para o restante do arquivo. OreadLines()
é apenas a leitura de stdin (que é tudo o que se segue, até o final do arquivo).R
duas respostas, e parece ser uma ferramenta enorme para uma pequena tarefa. Bem, as respostas funcionam, mas de qualquer maneira, há algo mais, excetoR
?scipy
, especialmente se você já usa o Python. Se você usa / gosta do Clojure (lisp baseado na JVM, clojure.org ), existe o ambiente estatísticoIncanter
( incanter.org ) construído sobre isso. Você também pode tentar o gnu Octave.Tente "st":
Você também pode ver o resumo de cinco números:
Você pode baixá-lo aqui:
https://github.com/nferraz/st
(AVISO LEGAL: Eu escrevi esta ferramenta :))
fonte
st
está disponível via Homebrewbrew install st
st
também pode fazer referênciasimple terminal
.R fornece um comando chamado Rscript . Se você possui apenas alguns números que podem colar na linha de comando, use este liner:
o que resulta em
Se você deseja ler a partir da entrada padrão, use este:
Se o número na entrada padrão for separado por retornos de carro (ou seja, um número por linha), use
Pode-se criar aliases para estes comandos:
fonte
read.table
ideia é uma ótima maneira de contornar um item por linha.datamash é outra ótima opção. É do Projeto GNU.
Se você possui homebrew / linuxbrew, pode fazer:
brew install datamash
fonte
Há também simple-r, que pode fazer quase tudo o que R, mas com menos pressionamentos de tecla:
https://code.google.com/p/simple-r/
Para calcular estatísticas descritivas básicas, seria necessário digitar um dos seguintes:
Não existe um simples-R!
fonte
Há sta, que é uma variável c ++ de st, também referenciada nesses comentários.
Sendo escrito em c ++, é rápido e pode lidar com grandes conjuntos de dados. É simples de usar, inclui a escolha de estimadores imparciais ou tendenciosos e pode gerar informações mais detalhadas, como erro padrão.
Você pode fazer o download do sta no github .
Disclaimer: Eu sou o autor de sta .
fonte
Apenas no caso, há datastat
https://sourceforge.net/p/datastat/code/
um programa simples para Linux que calcula estatísticas simples a partir da linha de comando. Por exemplo,
cat file.dat | datastat
produzirá o valor médio em todas as linhas para cada coluna de file.dat. Se você precisar conhecer o desvio padrão, min, max, poderá adicionar as opções --dev, --min e --max, respectivamente.
O datastat tem a possibilidade de agregar linhas com base no valor de uma ou mais colunas "principais".
É escrito em C ++, roda rápido e com pouca ocupação de memória e pode ser canalizado com outras ferramentas, como cut, grep, sed, sort, awk, etc.
fonte
Você também pode considerar o uso de clistats . É uma ferramenta de interface de linha de comando altamente configurável para calcular estatísticas para um fluxo de números de entrada delimitados.
Opções de E / S
Opções de análise
Opções de estatísticas
NOTA: Eu sou o autor.
fonte
A ferramenta Ya, que poderia ser usada para calcular estatísticas e visualizar a distribuição no modo ASCII, é ministat . É uma ferramenta do FreeBSD, mas também empacotada para distribuição Linux popular como o Debian / Ubuntu.
Exemplo de uso:
fonte
fonte
FLOAT_MAX-1.0
Tropecei nesse fio antigo procurando algo mais. Queria a mesma coisa, não conseguiu encontrar nada simples, o mesmo aconteceu em perl, bastante trivial, mas use-o várias vezes ao dia: http://moo.nac.uci.edu/~hjm/stats
exemplo:
(scut é uma versão mais lenta, mas sem dúvida mais fácil de cortar): http://moo.nac.uci.edu/~hjm/scut descrito: http://moo.nac.uci.edu/~hjm/scut_cols_HOWTO. html
fonte
Outra ferramenta: tsv-resume dos TSV Utilities do eBay . Oferece suporte a muitas das estatísticas de resumo básicas, como min, max, média, mediana, quantis, desvio padrão, MAD e mais algumas. Ele é destinado a grandes conjuntos de dados e suporta vários campos e agrupamentos por chave. A saída é separada por tabulação. Um exemplo para a sequência dos números 1 a 1000, um por linha:
Os cabeçalhos são normalmente gerados a partir de uma linha de cabeçalho na entrada. Se a entrada não tiver um cabeçalho, poderá ser adicionado usando o
-w
switch:Disclaimer: Eu sou o autor.
fonte