The two objects have the following column names in common:
> intersect(names(Finland_map), names(Aland_map))
[1] "OBJECTID" "ID_0" "ISO"
so they can be minimally bound this way:
> common = intersect(names(Finland_map), names(Aland_map))
> All_map = rbind(Finland_map[,common], Aland_map[,common])
If you want to construct new columns from combining data from the parts, you can do:
> All_map$NAME = c(Finland_map$NAME_2, Aland_map$NAME_LOCAL)
but you'll have to work out the names of the columns that go together - you might want NAME_ISO ("ÅLAND ISLANDS") from Aland_map instead.
You can maximally bind the objects by using a "filling" rbind function, such as bind_cols from dplyr, which sets all the missing bits to NA values. Do a simple rbind as above and then stomp on the data part of the object:
> All_map = rbind(Finland_map[,common], Aland_map[,common])
> All_map@data = dplyr::bind_rows(Finland_map@data, Aland_map@data)
Now you have lots of things with lots of NA values, because Aland has one row and lots of columns, so they are all NA for the Finnish rows.
You can use gUnaryUnion after giving the two regions to merge the same name:
> Finland_map$NAME_2[c(8,12)] = "Merged Uusimaa"
> Fin_uni = gUnaryUnion(Finland_map,id=Finland_map$NAME_2)
But that also merges the three Päijänne Tavastia features - do you want that? If not, make the two regions have common IDS but make sure everything else is unique:
> Finland_map$OBJECTID[c(8,12)] = 999
> Fin_uni = gUnaryUnion(Finland_map,id=Finland_map$OBJECTID)
> length(Fin_uni)
[1] 20
> names(Fin_uni)
[1] "1" "2" "3" "4" "5" "6" "7" "9" "10" "11" "13" "14"
[13] "15" "16" "17" "18" "19" "20" "21" "999"
Note this returns a SpatialPolygons object, not a data frame - it doesn't know what to do with the attributes of merged features and you've not said what you want to do. Merge the plain data frames as you wish and then attach them to the SpatialPolygon as per the usual methods for making SpatialPolygonsDataFrames.
raster:( – Spacedman Dec 15 '17 at 18:39