Dorota Jałocha

Dorota Jałocha Korepetycje z
matematyki

Temat: pętla w data.table

cześć,
mam gruby problem. używam data.table bo jak wiadomo szybciej działa. jednak jesdej petli nie potrafie przepisać
by działa w miare sprawnie

VisitSources <- as.vector(DF$PVsource)

for (i in 2:nrow(DF)) {

if(DF[i,visitID]==DF[i-1,visitID]) {

VisitSources[i]=VisitSources[i-1]

}
}
DF=cbind(DF,VisitSources)

operacje typu
DF][,channel := as.character(channel)][VisitSources=="fb", channel := "Organic"]
działa mega szybko i tym sposobem obeszłam wiekszosc rzeczy ale ta jedna powyzsza petla sprawia, że na kilku milionach rekordow kod kreci sie kilka godzin (na maksa z optymalizowałam zawalony RAM).

Czy kto moglby mi podpowiedziec jak usprawnic dzialanie tej petli ? bede bardzo wdzieczna.

p.s.
polecicie pakiet do R ktory nie ładuje do RAM, działa całkiem szybko jak data.table, pracuje nie tylko na numericach jak bigmatrix (cos tam type="char" szwankuje) i pozwala wykonywac swobodne operacje na wierszach jak wlasnie powyzsza ze wyluskuje tylko czesc wierszy ktore mnie interesuja?
nie mam co prawda dużego doświadczenia ale ff i filehash mi stoi okoniem pod no i wolno działają też..

pozdrawiam,
dorota
Paweł Broda

Paweł Broda Software Engineer

Temat: pętla w data.table

spróbuj stworzyć sobie na boku ramkę visit_id, pvsource z przesunięciem o 1 wiersz i przelecieć się po tym zwykłym ifelse. jeśli ram jest problemem to możesz podzielić to na mniejsze kawałki po N wierszy.
Dorota Jałocha

Dorota Jałocha Korepetycje z
matematyki

Temat: pętla w data.table

wpadłam na to, ale to nie spełnia to założen tak łatwo.
wartosc ma sie pamiętać czasem wiecej niz o jeden rekord.

w rezultacie wywaliłam to do awk bo już nie miałam czasu. ale nie było fajnie.

Następna dyskusja:

Liczba wierszy data.frame




Wyślij zaproszenie do