У меня есть большой набор данных (Matlab 1924014 на 5; ~ 73,4 МБ)Быстрее grpstats на большом наборе данных
Date id a b c
...
733234 1467 1.2656 1.2718 51.16
733235 1467 1.2732 1.2794 51.16
733236 1467 1.2781 1.2844 51.5
733236 1467 1.26 NaN NaN
733237 1467 1.3084 NaN NaN
733237 1467 1.3205 NaN NaN
733238 1467 1.3125 1.3188 53.85
733238 1467 1.3 NaN NaN
...
Date
является дата в datenum
форме.
Мне нужно усреднить (игнорируя NaN
s) последние три столбца для уникальных пар Date
+ id
, так как иногда существует несколько строк для данной пары Дата + id.
Выход я хочу
Date id mean_a mean_b mean_c
...
735234 1467 1.2656 1.2718 51.16
735235 1467 1.2732 1.2794 51.16
735236 1467 1.2691 1.2844 51.5
735237 1467 1.3144 NaN NaN
735238 1467 1.3062 1.3188 53.85
...
я ожидал, чтобы иметь возможность использовать
grpstats(myDataset, {'Date', 'id'}, 'mean')
Но это непозволительно медленно. Я ожидаю, что эта задача может быть завершена менее чем за 60 секунд. Я думаю, grpstats
добавляет столбец GroupCount и добавляет имена к каждому из наблюдений, что мне не нужно.
Как это сделать быстро? Я открыт для идей, используют ли они grpstats
.
Очень многообещающе! Менее 30 секунд на моей машине. Мне действительно нужно научиться использовать meshgrid/reshape. Просто проверяя вывод сейчас ... –
время meshgrid, если это занимает достаточно много времени, например. 1/3 времени, я отправлю подход repmat к созданию субтитров. – Oleg
Данные выглядят хорошо для меня! Это быстро для моих целей. Просто приуроченный к ней, 99% времени тратится на накопление. –