У меня есть набор данных (600 Мб с наблюдениями 5038720) о микро-блогах, и я попытался выяснить, сколько твитов (твитов с одинаковой серединой считается одним) час. Вот как набор данных выглядит следующим образом:R 'aggregate' исчерпывает память
head(mydata)
uid mid year month date hour min sec
1738914174 3342412291119279 2011 8 3 21 4 12
1738914174 3342413045470746 2011 8 3 21 7 12
1738914174 3342823219232783 2011 8 5 0 17 5
1738914174 3343095924467484 2011 8 5 18 20 43
1738914174 3343131303394795 2011 8 5 20 41 18
1738914174 3343386263030889 2011 8 6 13 34 25
и вот мой код:
count <- function(x) {
length(unique(na.omit(x)))
}
attach(mydata)
hourPost <- aggregate(mid, by=list(uid, hour), FUN=count)
Он повешен там около получаса, и я обнаружил, что использовалась вся настоящая память (24 Gb) и он начал использовать виртуальную память. Любая идея, почему эта маленькая задача потребляет столько времени и памяти, и как мне ее улучшить? Заранее спасибо!
Большое спасибо! Я просто сделал то, что вы предложили, и потребовалось меньше минуты, чтобы вернуть результат! – leoce
Вот удивительное чудо, которое является data.table. – Roland