Я хочу вычислить среднее значение и дисперсию столбца после фильтрации набора данных по другому столбцу. Например, с набором данных:
0 1
0 2
0 3
0 4
0 5
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
я хочу получить результат:
0 3 2.5
1 3 2.5
2 3 2.5
с классификационной переменной в первом столбце и средней дисперсией e во втором и третьем столбцах соответственно .
Вы можете мне помочь? Заранее спасибо.
Можно использовать GNU datamash:
datamash -W -g 1 mean 2 svar 2 < file
Объяснение:
-W
Используйте пробел в качестве разделителя-g 1
Группа полем 1mean 2
Печать, средняя из поля 2svar 2
Демонстрационное различие печати поля 2Посмотрите больше операций здесь.
Установка datamash
с apt
:
sudo apt install datamash
Используя метод Уэлфорда для вычисления дисперсии и предполагая, что дисперсии отличны от нуля (т.е. существует более одного экземпляра каждой категории): -вариант оставлен в качестве упражнения.