Является ли более широкий или длинный формат данных более эффективным? - PullRequest
5 голосов
/ 18 ноября 2011

Мне просто интересно, эффективнее ли хранить данные в длинном или широком формате независимо от интерпретации?Я использовал object.size(), чтобы определить размер в памяти, но они не отличаются значительно (длинный немного более эффективен с точки зрения размера), а значение только и приблизительное.

Поверх необработанногоразмер, мне также интересно, какой формат является более эффективным с точки зрения манипулирования при использовании в моделировании.

Ответы [ 2 ]

6 голосов
/ 18 ноября 2011

Использование памяти двумя различными matrix es должно быть идентичным:

> object.size(long <- matrix(seq(10000), nrow = 1000))
40200 bytes
> object.size(square <- matrix(seq(10000), nrow = 100))
40200 bytes

Любые различия в эффективности будут уменьшены из-за неэффективности использования R, поэтому вряд ли их следует учитывать, если онидаже измеримы.

Ситуация очень отличается для data.frame, поскольку она реализована как list из vector с:

> object.size(as.data.frame(long))
41704 bytes
> object.size(as.data.frame(square))
50968 bytes

Эффективность времени этогобудет зависеть от того, что именно вы хотите сделать.

1 голос
/ 18 ноября 2011

Для матрицы не будет абсолютно никакой разницы. То же самое верно для data.frame этой матрицы. Реформирование формы матрицы - это просто присвоение атрибутов измерения ... по большей части.

Если вы собираетесь каким-то образом классифицировать эти данные и добавить дополнительную информацию, то обычно широкие хранилища будут более эффективными с точки зрения хранения, но длинные обычно будут обрабатываться более эффективно. Это не является обязательным свойством длинного формата, так как оно менее экономно, но, как правило, в именах столбцов по ширине должно быть описание составной переменной, которое будет разделено и получит новый столбец или несколько столбцов в длину. Таким образом, это займет больше места из-за этих увольнений. Что касается обработки, проще объединять длинные данные или выбирать конкретные случаи для удаления, чем в широком формате с многомерными обозначениями столбцов.

Длинный также лучший способ (из этих двух), если данные не идеально прямоугольные (или кубические и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...