Daugiau

Eksportuojamas „pennLC“ objektas, saugomas R kaip formos failas


Man reikia eksportuotipennLCobjektas išPakuotė: „SpatialEpi“kaip formos failas.pennLCyra įvairių Pensilvanijos valstijos plaučių vėžio duomenų rinkinio komponentų, tokių kaip:

  • $ geo, duomenų rėmas
  • $ duomenys, duomenų rėmas
  • $ rūkymas, duomenų rėmas
  • $ spatial.poligonas, Erdviniai daugiakampiai.

Problema yra,pennLCturi daugybę komponentų, kurie nebus susieti, kai bandysiu juos eksportuoti kaip skirtingas lenteles ir formos failuswriteOGRarbawriteSpatialShapekomandos.

man reikiapennLCobjektas eksportuotas iš R kaip formos failas taip, kad jo duomenų rinkiniai/komponentai būtų susieti.


Kol duomenų rėmo ir „SpatialPolygons“ objekto eilutės sutampa, sukurti „SpatialPolygonsDataFrame“ ir eksportuoti jį į formos failą yra nereikšminga. UžpennLCduomenis, tai pakankamai paprasta$ geoir$ duomenyskomponentus, nes jie turi 67 eilutes, po vieną kiekvienai apskričiai.

Pirmiausia patikrinkite apskričių pavadinimus:

> visi (vardai (pennLC $ spatial.polygon) == pennLC $ smoking $ county) [1] TRUE> all (vardai (pennLC $ spatial.polygon) == pennLC $ geo $ County) [1] TRUE

Tada viskas gerai:

> pennLC_s = SpatialPolygonsDataFrame (pennLC $ spatial.polygon, data = cbind (pennLC $ geo, pennLC $ rūkymas), match.ID = FALSE)

ir tada galite sukurti formos failą naudodamiwriteOGR(arba dar lengviau ,.formos failasfunkcija išrastrinispaketas).

Keistas dalykas yra$ duomenyselementas, kuriame yra 16 eilučių kiekvienoje apskrityje, tai atvejai ir populiacija, suskirstyta pagal 4 amžiaus grupes, 2 rasių grupes ir 2 lyčių grupes (4x2x2 = 16). Tai suteiks mums 32 stulpelius. Dabar problema yra pertvarkyti šį duomenų rėmelį į vadinamąjį „platų“ formatą.

Tam mes naudojamelydytisirdcastfunkcijas išpertvarkyti2paketas

> reikalauti (pertvarkyti2)> df = dcast (lydytis (pennLC $ duomenys), apskritis ~ amžius+rasė+lytis+kintamasis) Apskrities, rasės, lyties, amžiaus naudojimas kaip kintamieji> dim (df) [1] 67 33

Tai yra mūsų duomenų pertvarkymas, todėl dabar turime 67 eilutes (po vieną kiekvienai apskričiai) ir 33 stulpelius (apskrities stulpelis, 16 skaičių ir 16 gyventojų stulpelių).

Pavadinimai sudaryti iš pirminių duomenų veiksnių:

> pavadinimai (df) [1] "apskritis" "40.59_o_f_cases" [3] "40.59_o_f_population" "40.59_o_m_cases" [5] "40.59_o_m_population" "40.59_w_f_cases" [7] "40.59_w_f_cases" ["] ] "40.59_w_m_population" "60.69_o_f_cases"

ir netrukus gali kilti problemų dėl formos ilgio vardų apribojimo ... tęskime. Patikrinkite vardų eilę:

> visi (df $ apygarda == pavadinimai (pennLC $ spatial.polygon)) [1] TRUE

dabar sukurkite „SpatialPolygonsDataFrame“:

> pennLC_data = SpatialPolygonsDataFrame (pennLC $ spatial.polygon, df, match.ID = FALSE)

ir parašyk (mano/tmpaplanką, rašote jį ten, kur norite) naudodamirasteris :: shapefile:

> reikalauti (rastrinis)> shapefile (pennLC_data, "/tmp/penn.shp", perrašyti = TRUE) Įspėjamasis pranešimas: In writeOGR (x, failo pavadinimas, sluoksnis, tvarkyklė = "ESRI Shapefile", overrite_layer = perrašyti,: Laukų pavadinimai sutrumpinti skirtas ESRI Shapefile tvarkyklėms

Pavadinimai buvo šiek tiek sutrinti, jums gali būti naudinga sutrumpinti stulpelių pavadinimus prieš juos rašant:

> ogrInfo ("/tmp", "penn") Šaltinis: "/tmp", sluoksnis: "penn" Vairuotojas: ESRI formos failo eilučių skaičius 67 Funkcijos tipas: wkbPolygon su 2 matmenimis Apimtis: (-80.53494 39.72316)-(-74.72516) 42.26137) KRS: +proj = longlat +ellps = WGS84 +no_defs LDID: 87 Laukų skaičius: 33 pavadinimo tipo ilgio tipas Pavadinimas 1 tęsinys 4 80 Eilutė 2 40_59__f_c 0 10 Sveikasis skaičius 3 40_59__f_p 0 10 Sveikasis skaičius 40 40_59__m_c 0 10 Visas skaičius 5 40_59__p Sveikasis skaičius 6 40_59_w_f_ 0 10 Sveikasis skaičius 40 40_59_w__1 0 10 Sveikasis skaičius 40 40_59_w_m_ 0 10 Sveikasis skaičius

ARBA naudokite geresnį formatą nei formos failas.