Я создал петлю для присвоения значений столбцов из data.frame
в колонку другого data.frame
на основе некоторых условий:Ускорить петлю для присвоения значений из нескольких данных фреймов
for (lineTab1 in 1 : dim(tab1)[1]) {
for (lineTab2 in 1 : dim(tab2)[1]) {
if (tab1$id[lineTab1] == tab2$id[lineTab2]) &
tab1$year[lineTab1] == tab2$year[lineTab2])) {
tab1$region[lineTab1] <- tab2$region[lineTab2]) }
}
}
Моих петли слишком медленно! Первый data.frame
(tab1
) имеет 60 000 000 наблюдений, а второй data.frame
(tab2
) имеет 1000 наблюдений. Есть ли способ ускорить эти петли?
... хотя с 60 миллионами записей возможно ** data.table ** или ** dplyr ** было бы предпочтительнее. – joran
Эй, я обновил код для решения 'data.table', чтобы отразить более распространенное использование. Я не обновлял ваше время. В частности, обратите внимание, что OP действительно не требует полного слияния, поэтому эти коды, вероятно, будут намного медленнее, если есть другие столбцы, особенно в 'tab2'. – MichaelChirico
@MichaelChirico Я не так знаком с 'data.table', как с' dplyr', но у вашего редактирования был 'i.region', который дал мне ошибку. Есть ли что-то, что мне не хватает, или это просто опечатка – user295691