Существует ли какой-либо инструмент командной строки, который принимает поток чисел (в формате ascii) из стандартного ввода и предоставляет основную описательную статистику для этого потока, такую как минимальное, максимальное, среднее, среднее, среднеквадратичное значение, квантили и т. Д.? Выходные данные могут быть проанализированы следующей командой в цепочке командной строки. Рабочая среда - Linux, но приветствуются и другие варианты.
27
Ответы:
Вы можете сделать это с R , что может быть немного излишним ...
РЕДАКТИРОВАТЬ 2: [Упс, похоже, что кто-то еще ударил Rscript, когда я перепечатывал это.] Я нашел более простой способ. Установленный с R должен быть Rscript, который предназначен для того, что вы пытаетесь сделать. Например, если у меня есть файл
bar
со списком чисел, по одному на строку:Передаст эти числа в R и запустит
summary
команду R в строках, возвращая что-то вроде:Вы также можете сделать что-то вроде:
чтобы получить квантили. И вы могли бы явно отрубить первую строку вывода (которая содержит метки) примерно так:
Я настоятельно рекомендую сначала делать то, что вы хотите в Interactive R, чтобы убедиться, что вы правильно указали команду. При попытке этого я пропустил закрывающую скобку, и Rscript ничего не возвращает - ни сообщения об ошибке, ни результата, просто ничего.
(Для записи файловая строка содержит:
источник
R
командами?foo
который содержал вsummary (as.numeric (readLines()))
качестве своей первой строки, а затем один числовой элемент данных на строку для остальной части файла. ЭтоreadLines()
только чтение из стандартного ввода (что является всем, что следует, до конца файла).R
обоих ответов, и это, кажется, огромный инструмент для крошечной задачи. Ну, ответы работают, но в любом случае, есть что-то еще, кромеR
?scipy
, особенно если вы уже используете Python. Если вы используете / как Clojure (lisp, основанный на JVM, clojure.org ), на этом построена статистическая средаIncanter
( incanter.org ). Вы также можете попробовать GNU Octave.Попробуйте "st":
Вы также можете увидеть пятизначную сводку:
Вы можете скачать это здесь:
https://github.com/nferraz/st
(ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я написал этот инструмент :))
источник
st
доступен через Homebrewbrew install st
st
также может ссылаться наsimple terminal
.R предоставляет команду Rscript . Если у вас есть только несколько чисел, которые вы можете вставить в командную строку, используйте этот вкладыш:
что приводит к
Если вы хотите читать из стандартного ввода, используйте это:
Если число на стандартном входе разделено возвратом каретки (т. Е. По одному номеру в строке), используйте
Можно создать псевдонимы для этих команд:
источник
read.table
идея - хороший способ обойтись по одному элементу в строке.Datamash - еще один отличный вариант. Это из проекта GNU.
Если у вас есть homebrew / linuxbrew, вы можете сделать:
brew install datamash
источник
Существует также simple-r, который может делать почти все, что может R, но с меньшим количеством нажатий клавиш:
https://code.google.com/p/simple-r/
Чтобы рассчитать базовую описательную статистику, нужно набрать одно из:
Не получает просто-R!
источник
В этих комментариях также упоминается sta, разновидность c ++ для st.
Будучи написанным на C ++, он быстр и может обрабатывать большие наборы данных. Он прост в использовании, включает в себя выбор объективных или смещенных оценок и может выводить более подробную информацию, такую как стандартная ошибка.
Вы можете скачать Sta на GitHub .
Отказ от ответственности: я автор sta .
источник
На всякий случай, есть дата
https://sourceforge.net/p/datastat/code/
простая программа для Linux, вычисляющая простую статистику из командной строки. Например,
кошка file.dat | datastat
выведет среднее значение по всем строкам для каждого столбца file.dat. Если вам нужно знать стандартное отклонение, min, max, вы можете добавить опции --dev, --min и --max соответственно.
datastat имеет возможность агрегировать строки на основе значения одного или нескольких «ключевых» столбцов.
Он написан на C ++, работает быстро и с небольшим объемом памяти, и его можно легко передать с помощью других инструментов, таких как cut, grep, sed, sort, awk и т. Д.
источник
Вы также можете рассмотреть возможность использования clistats . Это настраиваемый инструмент интерфейса командной строки для вычисления статистики для потока входных чисел с разделителями.
Варианты ввода / вывода
Варианты разбора
Параметры статистики
ПРИМЕЧАНИЕ: я автор.
источник
Инструментом Ya, который можно использовать для расчета статистики и распределения представления в режиме ASCII, является ministat . Это инструмент от FreeBSD, но он также упакован для популярного дистрибутива Linux, такого как Debian / Ubuntu.
Пример использования:
источник
источник
FLOAT_MAX-1.0
Наткнулся на эту старую ветку в поисках чего-то другого. Хотелось то же самое, не мог найти ничего простого, поэтому сделал это в perl, довольно тривиально, но использовал его несколько раз в день: http://moo.nac.uci.edu/~hjm/stats
пример:
(scut медленнее, но, возможно, проще для версии cut): http://moo.nac.uci.edu/~hjm/scut описано: http://moo.nac.uci.edu/~hjm/scut_cols_HOWTO. HTML
источник
Еще один инструмент: tsv-подводить итоги от eBay TSV Utilities . Поддерживает многие основные сводные статистические данные, такие как минимальная, максимальная, средняя, медиана, квантили, стандартное отклонение, MAD и некоторые другие. Он предназначен для больших наборов данных и поддерживает несколько полей и группировку по ключу. Выход разделен табуляцией. Пример последовательности чисел от 1 до 1000, по одному на строку:
Заголовки обычно генерируются из строки заголовка на входе. Если у входа нет заголовка, его можно добавить с помощью
-w
переключателя:Отказ от ответственности: я автор.
источник