../../_images/logo_R.png

R gyorstalpaló

Az R egy szabad szoftver környezet statisztikai számításokhoz és grafikákhoz.

Ez a gyorstalpaló leírja:

  • R használata egyszerű számításokhoz

  • Adatok betöltése shape fájlból és megjelenítése

  • koordináta transzformáció végrehajtása

  • pontok megjelenítése a térképen

Indítsa el az R-t

Az R lényegében egy parancssori program, bár a grafikus felhasználói felületek is rendelkezésre állnak. Beír egy sornyi kódot a parancssorba, megnyomja a return gombot, és a R interpreter kiértékeli azt, és kiírja az eredményt.

Javaslat

Ne tartson a parancssortól - nagy lehetőségek forrása. A fel és le nyilakat használva visszahívhatja a korábbi parancsokat, így kijavíthatja a hibákat. Nyomjon CTRL.C-t, ha elakadt és a promptot szeretné visszakapni.

Válassza a menüből Geospatial ‣ Spatial Tools ‣ R Statistics-t. Az R-t futtató terminálablak jelenik meg.

Egyszerű aritmetikai számításokkal kezdheti.

> 3*2
[1] 6

> 1 + 2 * 3 / 4
[1] 2.5

> sqrt(2)
[1] 1.414214

> pi * exp(-1)
[1] 1.155727

Az aritmetikai, trigonometriai és statisztikai függvények teljes készletét beépítették és további ezrek érhetők el a CRAN archívum csomagjaiból.

Az R-ben a fő prompt a >, de van egy folytató prompt +, mely akkor jelenik meg ha az R további inputot vár teljes kifejezéshez. Akkor látja, ha elfelejt megadni egy záró szögletes vagy kerek zárójelet.

> sqrt(
+ 2
+ )
[1] 1.414214

Adatok előállítása

Lehet, hogy csodálkozik, hogy mit csinálhat a titokzatos «egy» a szögletes zárójelben az outputban. Ez azt jelenti, hogy az eredmény egy szám. Az R képes az adatokat egydimenziós vektorokban, kétdimenziós mátrixokban, és a többdimenziós tömbökben tárolni. Sok olyan függvény van, amely képes ezeket generálni. Íme egy egyszerű sorozat:

> seq(1, 5, len=10)
[1] 1.000000 1.444444 1.888889 2.333333 2.777778 3.222222 3.666667 4.111111
[9] 4.555556 5.000000

Most láthatja, hogy a [9] azt jelenti, hogy a 4.555 a kilencedik érték a vektorban.

Ha mátrixot hoz létre sor és oszlop címkéket kap:

> m = matrix(1:12, 3, 4)
> m
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

A mátrix elemeinek eléréséhez szögletes zárójelek között, vesszővel elválasztva adjuk meg a sor és oszlop indexeket. Hagyja üresen az egyik indexet a a teljes sor vektorként megkapásához. Használjon egy vektor indexet több sor vagy oszlop kivételéhez mint egy kisebb mátrix:

> m[2,4]
[1] 11

> m[2,]
[1]  2  5  8 11

> m[,3:4]
     [,1] [,2]
[1,]    7   10
[2,]    8   11
[3,]    9   12

Az adatkeretek olyan adatstruktúrák, melyek az RDMS-ekben, mint például Postgres vagy MySQL, található adatstruktúrákat tükrözik. Minden sorra mint egy rekordra gondolhatunk, oszlopokkal mint a mezők az adatbázisban. Mint az adatbázisban, minden mezőnek azonos típusúnak kell lennie minden rekordban.

Sok szempontból ezek ugyanúgy működnek, mint a mátrixok, de megkaphatja és beállíthatja az oszlopokat név alapján is a $ jelölés használatával:

> d = data.frame(x=1:10, y=1:10, z=runif(10)) # z is 10 random numbers
> d
        x  y          z
    1   1  1 0.44128080
    2   2  2 0.09394331
    3   3  3 0.51097462
    4   4  4 0.82683828
    5   5  5 0.21826740
    6   6  6 0.65600533
    7   7  7 0.59798278
    8   8  8 0.19003625
    9   9  9 0.24004866
    10 10 10 0.35972749

> d$z
 [1] 0.44128080 0.09394331 0.51097462 0.82683828 0.21826740 0.65600533
 [7] 0.59798278 0.19003625 0.24004866 0.35972749

> d$big = d$z > 0.6  # d$big is now a boolean true/false value
> d[1:5,]
  x y          z   big
1 1 1 0.44128080 FALSE
2 2 2 0.09394331 FALSE
3 3 3 0.51097462 FALSE
4 4 4 0.82683828  TRUE
5 5 5 0.21826740 FALSE

> d$name = letters[1:10] # create a new field of characters
> d[1:5,]
  x y          z   big name
  1 1 1 0.44128080 FALSE    a
  2 2 2 0.09394331 FALSE    b
  3 3 3 0.51097462 FALSE    c
  4 4 4 0.82683828  TRUE    d
  5 5 5 0.21826740 FALSE    e

Térképi adatok betöltése

Sok csomag létezik a téradatok kezelésére és statisztikákra. Néhányat bevettünk ide és néhány letölthető a CRAN-ról.

Két shape fájlt fogunk betölteni itt - az országhatárok és lakott helyek a Natural Earth adatokból. Két kiegészítő csomagot használunk a térbeli funkcionalitás eléréséhez:

> library(sf)           # Simple Features manipulation Library
> library(ggplot2)      # Plotting library

> countries <- st_read(dsn = "~/data/natural_earth2/ne_10m_admin_0_countries.shp")
> places <- st_read(dsn = "~/data/natural_earth2/ne_10m_populated_places.shp")
> ggplot(countries) + geom_sf()

Ez egy egyszerű világtérképet ad nekünk:

../../_images/r_plot1.png

Ha egy OGR adathalmazt olvasunk be az R-be, egy olyan objektumot kapunk, amely sok szempontból úgy viselkedik, mint egy adatkeret. Az admin mezőt használhatjuk, hogy a világ adatok részhalmazát kapjuk, csak az Egyesült Királyságot:

> uk <- countries[countries$admin == 'United Kingdom',]
> ggplot(uk) + geom_sf()
../../_images/r_plot2.png

Ez egy kicsit lapítottnak tűnik mindenkinek, aki itt lakik, mivel jobban ismerjük azt a koordináta-rendszert, amely a szélességi körünkhöz igazított. Jelenleg nem rendeltünk még az objektumhoz koordináta-rendszert.

Az objektumhoz hozzá kell rendelnünk egy vetületi rendszert, mielőtt transzformálhatnánk az sf::st_transform függvénnyel az sf csomagból, Az EPSG:27700-be transzformálunk, mely Nagy-Britannia referencia rendszere:

> ukos <- st_transform(uk,27700)
> ggplot(ukos) + geom_sf()
../../_images/r_plot2_1.png

Ez kirajzolja a transzformált alaptérképet. Most hozzá akarunk adni néhány pontot a lakott területek adathalmazból. Ismét egy részhalmazt hozunk létre a kívánt pontokból és Ordanance Survey koordinátákba transzformáljuk:

> ukpop <- places[places$SOV0NAME == 'United Kingdom',]
> ukpop <- st_transform(ukpop,27700)

Ezeket a pontokat hozzáadjuk az alaptérképhez, a méretüket a népesség négyzetgyökére skálázzuk (mert ez a szimbólumot népesség területarányosra állítja), állítsuk a színt pirosra és tömör kitöltésű foltra:

> ggplot() +
>   geom_sf(data = ukos) +                                                          # add UK shape to the map
>   geom_sf(data = ukpop,                                                           # add the Populated places
>           aes(size = ukpop$POP_MAX/100000),                       # fix size of points (by area)
>           colour = 'red', alpha = 1/5) +                          # set points colour and transparency
>   coord_sf(crs = 27700, datum= sf::st_crs(27700),         # set a bounding box
>            xlim = st_bbox(ukos[c(1,3)]),                          # for the map
>            ylim = st_bbox(ukos[c(2,4)])
>           ) +
>   ggtitle('Uk Population centre sizes') +                         # set the map title
>       theme(legend.position = 'bottom') +                         # Legend position
>           scale_size_area(name = 'Population \nin 100K')  # 0 value means 0 area + legend title

és megjelenik a végső képünk:

../../_images/r_plot3.png

Javaslat

Az R-ből kilépéshez írja be q() és return. Az R megkérdezi, hogy menteni akarja-e a munkaterületét mint egy R adat-kép fájl. Amikor az R-t olyan könyvtárból indítja, ahol egy .RData fájl található, visszaállítja abból az adatokat.

Matricák

Korábban az R csomagok dokumentációja minden függvényhez tömören megírt súgó oldalakra irányult. Most a csomag szerzőit arra bátorítjuk, hogy egy «matricát» írjanak mint a csomag egy barátságos bemutatása. Ha a vignette() függvényt argumentumok nélkül futtatja a rendszerén található matricák listáját kapja. Próbálja ki a vignette("sf1") parancsot egy technikai bevezetőhöz az R térbeli csomagjához.

Mi a következő?

Általános információkhoz az R-ről próbálja meg a hivatalos Introduction to R vagy bármely dokumentációt az R Project fő oldaláról.

Az R térbeli vonatkozásairól további információhoz a legjobb kezdőpont valószínűleg az R Spatial Task View

You might also want to check out the R-Spatial and RSpatial pages.