Размер файла Rdata по сравнению с csv

Размер моего файла .Rdata составляет 92 МБ.

Однако исходный CSV-файл весит около 3 ГБ. Я включил его с обычным read.csv()

Как это может быть?


person Rico    schedule 04.06.2013    source источник
comment
Не могли бы вы рассказать нам, как выглядит исходный файл csv?   -  person Matthew Plourde    schedule 04.06.2013
comment
Двоичный и ASCII. Предполагая, что вы проверили содержимое вашего файла .Rdata и что ваша ОС правильно обновила размеры файлов.   -  person Carl Witthoft    schedule 04.06.2013
comment
Кроме того, файлы .Rdata сжаты по умолчанию.   -  person Hong Ooi    schedule 04.06.2013
comment
12417576 строк, 14 столбцов, 3 даты, почтовые индексы и несколько столбцов с несколькими факторами. Звучит очень сжато, но все же впечатляюще.   -  person Rico    schedule 04.06.2013


Ответы (1)


Комментарии уже намекнули на происходящее. Но это так просто, давайте сделаем пример:

R> X <- 1:1e5   # data, no repeats
R> save(X, file="/tmp/foo.RData")
R> write.csv(X, file="/tmp/foo.csv")
R> system("ls -l /tmp/foo*")
-rw-r--r-- 1 x y 1377797 Jun  4 09:11 /tmp/foo.csv
-rw-r--r-- 1 x y  212397 Jun  4 09:11 /tmp/foo.RData

Теперь с данными, которые повторяются:

R> X <- rep(1,1e5)   # data, lots of repeats
R> write.csv(X, file="/tmp/bar.csv")
R> save(X, file="/tmp/bar.RData")
R> system("ls -lh /tmp/bar*")
-rw-r--r-- 1 x y 966K Jun  4 09:12 /tmp/bar.csv
-rw-r--r-- 1 x y 1.3K Jun  4 09:12 /tmp/bar.RData
R> 

Таким образом, мы получаем коэффициенты от 6,5 до 743 в зависимости от того, насколько хорошо это сжимается. И это до того, как мы сделаем csv более «дорогим», заставив печатать несколько десятичных знаков...

person Dirk Eddelbuettel    schedule 04.06.2013
comment
Становится еще лучше с rep(TRUE,1e5) - person Simon O'Hanlon; 04.06.2013