Ignoring the fact that most of the area names in your sample data do not match the corresponding area names in the map (very likely because the division level is not actually the one you are specifying), you can do something like this to get the result you are describing.
library(tidyverse)
library(sf)
#> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
region.scores <- data.frame(
stringsAsFactors = FALSE,
check.names = FALSE,
NAME_1 = c("Baden-Württemberg","Bayern",
"Berlin","Brandenburg","Bremen","Hamburg","Hessen",
"Mecklenburg-Vorpommern","Niedersachsen",
"Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen",
"Sachsen-Anhalt","Schleswig-Holstein","Thüringen","Total"),
Value = c(86.6874660879002,
82.3455216,85.4518781,88.35817,94.2103,
86.1654135338346,88.24749999,89.689999,
88.4498956158664,87.8950791242143,87.189596,
88.338198251,89.0658,91.2355955248,
90.03660836,89.74905817,88.15668314),
N = c(3686,3651,1182,1329,156,
266,4000,608,3832,9226,2512,686,2227,1562,1366,
797,37086)
)
area.scores <- data.frame(
stringsAsFactors = FALSE,
NAME_2 = c("Aachen","Aalen-Essingen",
"Achim","Ahlen","Ahrensburg","Albstadt","Alsfeld",
"Amberg","Ammerbuch -Entringen","Andernach","Ansbach",
"Auerbach","Aurich","Bad Dürkheim","Bad Feilnbach",
"Bad Kreuznach","Bad Neustadt","Bad Oeynhausen",
"Bad Salzungen","Bad Soden-Salmünster","Bad Vilbel",
"Bad Wünnenberg","Bad Zwischenahn","Baesweiler","Balingen",
"Bamberg","Beckum","Bergen","Bergfelde","Bergisch Gladbach",
"Bergisch Gladbach-Bensberg","Berglern","Berlin -Britz",
"Berlin-Biesdorf","Berlin-Hohenschönhausen",
"Berlin-Oberschöneweide","Berlin-Spandau","Bernau","Bielefeld",
"Bietigheim-Bissingen","Birkenfeld",
"Bitterfeld-Wolfen","Böblingen","Bocholt","Bochum-Wattenscheid","Bonn",
"Bösel","Bottrop","Brandenburg","Braunschweig",
"Bremen","Bremerhaven","Brühl","Buchholz","Bünde",
"Burghausen","Bürstadt","Castrop-Rauxel","Chemnitz",
"Chemnitz -Röhrsdorf","Coesfeld","Contwig",
"Cottbus -Groß Gaglow","Crailsheim","Crimmitschau","Dallgow",
"Dänischenhagen","Darmstadt","Datteln","Deggendorf","Delitzsch",
"Delmenhorst","Dessau -Roßlau","Dillenburg",
"Dingolfing","Dinslaken","Dippoldiswalde","Donauwörth",
"Dörfles-Esbach","Dorsten -Wulfen","Dörth","Dortmund",
"Dreieich -Sprendlingen","Duisburg","Durach","Düren",
"Durmersheim","Düsseldorf","Eckernförde","Eilenburg",
"Einbeck","Eisenach","Elmshorn","Emmendingen -Kollmarsreute",
"Emsdetten","Eppstein-Bremthal","Erfurt","Erkner",
"Erlangen","Eschwege","Eschweiler","Essen","Eutin",
"Frankfurt (Main)","Frankfurt (Oder)","Frankfurt am Main",
"Fraureuth","Freiburg","Freyburg","Friedberg",
"Fürth","Garbsen","Gardelegen","Garmisch-Partenkirchen",
"Geisenheim","Geislingen","Gelsenkirchen","Gelting",
"Geretsried","Gernsheim","Gießen","Gifhorn","Göppingen",
"Goslar","Göttingen","Greifswald","Grevenbroich",
"Grünstadt","Gummersbach","Gunzenhausen","Güstrow",
"Hagen","Hagenow","Halberstadt","Haldensleben","Halle",
"Halle (Saale)","Haltern","Hamburg",
"Hamburg -Stellingen","Hamburg -Wandsbek","Hamburg-Bergedorf","Hamm",
"Hannover","Hattingen","Heide","Heidelberg","Heiden",
"Heidenheim (Brenz)","Heinsberg","Heinsberg -Schafhausen",
"Hellenthal","Henstedt-Ulzburg","Hermannsburg",
"Herne","Herold","Herrenberg","Heuchelheim","Hof",
"Homburg (Saar)","Höxter","Hoyerswerda","Husum","Hutthurm",
"Ibbenbüren","Idar-Oberstein","Idstein","Iserlohn",
"Jork -Königreich","Jüchen","Jülich","Jüterbog",
"Kaiserslautern","Kamen","Karlsruhe","Kassel","Kempen",
"Kerpen","Kippenheim","Kirchhain","Koblenz","Köln",
"Köngen","Königslutter","Köthen","Krefeld","Kronach",
"Kronshagen / Kiel","Kyritz","Laatzen","Lachendorf",
"Landshut -Altdorf","Laubach","Lebach","Leer (Ostfriesland)",
"Leipzig","Leipzig -Rückmarsdorf","Leonberg", "Leverkusen","Liebenburg",
"Limburg -Offheim","Löbau-Großdehsa","Lübeck","Lüchow",
"Lüdenscheid","Lüdinghausen","Ludwigsburg","Lüneburg",
"Lüssow -Langendorf / Stralsund","Magdeburg","Mainz", "Mainz -Kastel","Mainz-Kastel",
"Mandelbachtal-Ommersheim","Mannheim","Marburg","Markkleeberg","Marl","Marne",
"Mayen","Meckenbeuren -Liebenau","Melle","Merzig",
"Messingen","Michelfeld","Michelstadt","Minden",
"Moers","Mönchengladbach","Mülheim","Müllheim","München",
"Murnau","Neubrandenburg","Neumarkt (Oberpfalz)",
"Neumünster","Neuruppin","Neuss","Neustadt (Orla)",
"Neuwied","Nienburg (Weser)","Oberhausen",
"Obersulm -Willsbach","Oer-Erkenschwick","Offenbach","Oldenburg",
"Oppenheim","Oschatz","Overath","Paderborn","Papenburg",
"Pasewalk","Petersberg","Pfaffenhofen (Ilm)","Pfedelbach",
"Pirmasens","Pirna","Plauen","Pocking","Potsdam",
"Prenzlau","Prüm","Quedlinburg","Radebeul",
"Ravensburg -Weststadt","Recklinghausen","Remscheid",
"Rheda-Wiedenbrück","Rheine","Riesa","Römerberg","Rosenfeld",
"Rostock","Roth","Rottach-Egern OT Weißach","Rottweil",
"Ruhmannsfelden","Saalfeld","Saarbrücken","Salzgitter",
"Sangerhausen","Schenefeld","Schleswig",
"Schmalkalden -Mittelstille","Schongau","Schortens","Schwabhausen",
"Schwäbisch Gmünd -Bettringen","Schwedt (Oder)",
"Schweinfurt","Schwelm","Selm -Bork","Siegen","Sinsheim",
"Soest","Sömmerda","Sonthofen","Sottrum","Speyer",
"St. Ingbert","Stade -Wiepenkathen","Stadthagen",
"Stemwede -Dielingen","Stendal","Stockelsdorf","Straubing",
"Strausberg","Stuttgart","Süderlügum","Suhl","Sundern",
"Teltow","Templin","Tessin","Thalheim (Erzgebirge)",
"Torgau","Trierweiler","Tuttlingen","Ulm","Varel",
"Vellmar","Viersen -Dülken","Wadern -Wadrill",
"Wangen im Allgäu","Warendorf","Weimar","Weißenburg",
"Weißenfels","Wenden -Altenhof","Wermelskirchen",
"Wermsdorf -Luppa","Wernigerode","Werther","Wesel","Westerholt",
"Wetzlar","Wielenbach","Wirges","Wismar","Wissen",
"Wittenberg","Wittlich","Wittstock","Witzenhausen",
"Wöfersheim-Berstadt","Wolfenbüttel","Wolfsburg","Wuppertal",
"Xanten","Zeesen","Zeitz","Zittau -Pethau","Total"),
Value = c(93.3,84.5,87.1,91.3,95.7, 86.7,87.7,84.8,86,88.4,86.7,89.4,90,87.7,91.1,
86.7,90,93.3,93.1,87,85.5,89.9,96.3,84,91.7,84.1,
94.7,88.5,90.3,81.8,86.9,83.3,83.6,85.7,82.9,
86.9,67.5,85.9,93.6,84.2,86.3,93.8,89.3,94,81.9,
87.9,100,87.6,91.6,88.3,88.1,92,96.7,82.8,83,
92.5,92.3,83,92.5,92,85.7,90.5,92.5,83.1,90.4,66.7,
91.1,93.3,80.4,81.3,100,94.5,93.4,91.5,90,81.2,
93.8,100,86.7,86.6,60,87,82.9,90,82.2,89.7,90,
92.6,80,89.6,91.9,85,90,90,90.9,90.7,100,87.1,
95.8,81.9,92.5,89.7,85,60,90,100,100,93.2,
89.1,72,87.6,85.3,93.6,89.6,95,90,90,90,90,91.1,
85,90,88.1,90.9,87.4,93.6,95,84.1,91.4,90,91.2,
90.3,85,89.4,94.6,92.8,86,95,88.8,86,88.3,90,
87.5,83.6,87,93.9,89.4,90.3,82.2,96.7,93.6,100,
94.5,93,84.7,90,88.3,91.3,88,90.3,81.9,100,84,
87.4,91.4,100,87.8,98.3,89.2,90,95,83,95,93.3,
81.9,80,96.7,89.6,87.8,90.2,78.5,89.8,84.8,92.5,
86.7,86.3,83.3,92.1,85.5,82.8,79,80,84.1,87.6,
88.8,87.7,86,90.4, 83.5,92.7,88.6,91.4,86,90,
100,96.2,86,91.2,85,85.8,82.5,82.3,84,80,90,
87.7,83.3,90.8,94.3,87.1,87.8,97.5,88.5,100,89.6,
85.9,78.6,97.7,85.2,84,87,85,89.4,86.5,91.6,86,
87.1,87.5,100,90.1,81.3,89.3,90.4,85.9,80,88.2,
89.3,83.3,92.5,90.7,89.5,96,89.7,86,84.8,83.5,
89.8,86,91.2,84.4,86,87.5,92.7,94.2,87.9,80.1,
86.4,91.4,84.4,91.7,86.4,92.7,88,87.5,91.8,86.8,
92.5,76.7,86.9,95.5,98.2,91.6,91,92,91.4,87.1,
100,94.4,90,87.9,95,94.3,94.5,89.1,82.7,84.1,
92.3,86.7,79.7,85,84,91.4,95.3,90,88.3,80,90,
91.1,90,64.3,91.2,85.7,88.8,100,89.7,73.3,86.1,
90.7,88.8,91.1,86,88,94.6,82.4,87.8,90,91.7,90,
89.3,82.2,90,84,88,89,88.5,91.7,89.4,87.9,86.3,
83.8,92,82,93.3,88.1,88.1,86.5,90,60,86.7,91,90, 95.3,87.9)
)
url_regions <- "https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_DEU_2_sf.rds"
scored_regions <- readRDS(url(url_regions))
# I'm only going to use matching areas to exemplify, you have to fix this issue for this to work properly
area.scores <- area.scores %>%
filter(NAME_2 %in% scored_regions$NAME_2)
scored_regions <- scored_regions %>%
full_join(region.scores) %>%
as_tibble() %>%
rows_update(area.scores, by = "NAME_2") %>%
st_as_sf()
#> Joining, by = "NAME_1"
scored_regions %>%
ggplot(aes(fill = Value)) +
geom_sf() +
scale_fill_gradient(low = "red", high = "green") +
labs(title = "Value Score by region",
fill = "Scores") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, size = 20),
axis.title = element_blank(),
plot.background = element_blank(),
legend.position = c(0.95, 0.20),
plot.margin = margin(5, 0, 5, 0))
Created on 2021-06-11 by the reprex package (v2.0.0)