R ggplot2 łączy się z danymi shapefile i csv, aby wypełnić wielokąty

Codziennie tworzymy mapy, które pokazują obliczony poziom temperatury w 30 różnych obszarach naszego regionu, każdy obszar jest wypełniony innym kolorem w zależności od poziomu. Te mapy wyglądają

Teraz chcę zmienić generowanie mapy na R. Pobrałem granice prowincjonalne i miejskie (można je znaleźćgranice dla całej Hiszpanii lub tutajpodzbiór dla mojego regionu) i udało się je wykreślić za pomocą ggplot2 po Hadleyprzykład.

Mogę również utworzyć plik ascii zawierający dwie kolumny: identyfikator (CODINE) i poziom dzienny. Możesz pobraćtutaj.

Jest to mój pierwszy skrypt próbujący wykreślić shapefile za pomocą R i ggplot2, więc mogą występować błędy i na pewno można je poprawić, mile widziane sugestie. Poniższy kod (oparty na wcześniej wspomnianym Hadley) działa dla mnie:

> require("rgdal")
> require("maptools")
> require("ggplot2")
> require("plyr")

# Reading municipal boundaries

esp = readOGR(dsn=".", layer="lineas_limite_municipales_etrs89")

muni=subset(esp, esp$PROV1 == "46" | esp$PROV1 == "12" | esp$PROV1 == "3")
muni@data$id = rownames(muni@data)
muni.points = fortify(muni, region="id")
muni.df = join(muni.points, muni@data, by="id")

# Reading province boundaries

prov = readOGR(dsn=".", layer="poligonos_provincia_etrs89")

pr=subset(prov, prov$CODINE == "46" | prov$CODINE == "12" | prov$CODINE == "03" )
pr@data$id = rownames(pr@data)
pr.points = fortify(pr, region="id")
pr.df = join(pr.points, pr@data, by="id")

ggplot(muni.df) + aes(long,lat,group=group) + geom_path(color="blue") +
+ coord_equal()+ geom_path(data=pr.df, + 
aes(x=long, y=lat, group=group),color="red", size=0.5) 

Ten kod przedstawia ładną mapę ze wszystkimi granicami

W przypadku wypełniania wielokątów przez poziom próbowałem odczytać, a następnie połączyć zgodnie z sugestiąhttp://tormodboe.wordpress.com/2011/02/22/g%C3%B8y-med-kart-2/

level = read.csv ("levels.dat", header = T, sep = "")
munlevel = merge (muni.df, level, by = "CODINE")

ale to błąd

Błąd en fix.by (by.x, x): „by” musi określać unikatową kolumnę

Nie jestem zaznajomiony z plikami shapefiles, może potrzebuję dowiedzieć się więcej na temat atrybutów danych shp, aby znaleźć właściwy wybór do scalenia obu zestawów danych. Jak mogę scalić dane, aby móc wykreślić linie (granice miejskie), a następnie wypełnić je poziomami?

questionAnswers(1)

yourAnswerToTheQuestion