Мне нужно добавить значения из столбца другого фрейма данных в столбец в моем основном фрейме данных на основе условия соединения.
Пример кода:
> df <- data.frame(branch = c('a','b','c','d'),
+ m1 = c(10,15,10,20),
+ m3 = rnorm(4,15,2))
> df
branch m1 m3
1 a 10 12.35114
2 b 15 14.87139
3 c 10 12.23589
4 d 20 20.26247
>
> df2 <- data.frame(outlet = c('c','a','d','b'),
+ ml = c(3,6,5,3))
> df2
outlet ml
1 c 3
2 a 6
3 d 5
4 b 3
>
Обязательный вывод:
> df
branch m1 m3
1 a 16 12.35114
2 b 18 14.87139
3 c 13 12.23589
4 d 25 20.26247
>
Я попытался выполнить inner_join, но мне нужно выполнить несколько шагов:
> df3 <- inner_join(df,df2,by = c('branch' = 'outlet'))
> df3
branch m1 m3 ml
1 a 10 12.35114 6
2 b 15 14.87139 3
3 c 10 12.23589 3
4 d 20 20.26247 5
> df3$m1 <- df3$m1 + df3$ml
> df3
branch m1 m3 ml
1 a 16 12.35114 6
2 b 18 14.87139 3
3 c 13 12.23589 3
4 d 25 20.26247 5
> df3[4] <- NULL
> df3
branch m1 m3
1 a 16 12.35114
2 b 18 14.87139
3 c 13 12.23589
4 d 25 20.26247
> df <- df3
Мне нужен мой исходный кадр данных (df) с только что обновленными значениями столбца m1. Есть ли способ сделать задачу более эффективно?