Just use aggregate
by category to sum the various entries. Try using with
on the 'rbind' value to get them in the same object.
with( rbind( df1, df2), aggregate(WEIGHT, list(FROM=FROM, TO=TO) , sum) )
FROM TO x
1 xyz_1 abc_3 440
2 abc_1 Dummy 100
3 abc_2 Dummy 20
4 abc_4 Dummy_7 100
5 abc_7 Dummy_9 2000