GRASS and R

R is a program which is constructed from libraries, you need certain libraries for certain types of analysis.

To add a library type

library(library name)

for example

library(rcmdr) Launches R Commander GUI
commander() relaunches R Commander GUI

See also the Digging numbers section for an introduction to R.

Using R with GRASS GIS

Start GRASS GIS Open a mapset To start R type:

R

Firstly you need the library with allows R to access the GRASS data: spgrass6 library(spgrass6) to check it has worked use

str(gmeta6())

This will list various information about your current mapset Even though you are working in R you can access GRASS commands using the system command

system('g.list')

This will bring up the g.list GUI

Reading Vector Data

To access data from GRASS you need to get R to create a SpatialGridDataFrame class object, in this case we call the DataFrame data

data <- readVECT6(c("mapA"),plugin=F)

use summary() to see check it has imported correctly

summary(data)

This will give you:

  • Minimum
  • 1st Quartile
  • Median
  • Mean
  • 3rd Quartile
  • Maximum

for each of your columns in the attribute table You can also plot the data using the plot() function

plot(data)

to get a nicer plot of your data use

library(maptools)
spplot(data)

Reading Raster Data

Raster data is imported in a similar way as vector data just by using the readRAST6 function

data<-readRAST6(c("mapA"),plugin=F)

Visualising data

There are many ways to visualise data

Bars, lines and pies

This section will demonstrate how to create nice looking graphs from your data.

plot(data)
hist(data)

Also these come with many options to change the defaults:

  • graph layout
  • main the title of the graph …main=”Main Title”…
  • xlim the x axis limits …xlim=c(1,10)…
  • ylim the y axis limits …ylim=c(1,100)…
  • xlab the label for the x axis …xlab=”x axis label”…
  • ylab the label for the y axis …ylab=”y axis label”…
  • xaxt x axis type …xaxt=”n”… other options:
  • yaxt y axis type …yaxt=”n”… other options:
  • colours and symbols

More than one graph at a time

Some times you want to see a selection of graphs at the same time, R is able to do this through the par command

par(mfrow=c(1,1)) #this will set the environment to display one graph
par(mfrow=c(1,2)) #this will set 1 row 2 columns
par(mfrow=c(2,2)) #this will give a 2 by 2 appearance

you only need to do this once then the next graph you create will be in the first position and any following graphs will follow after.

Removing data

Sometimes there is data which you do not want to display.

newdata <- data[data>=1]

This will remove Zeros and minus numbers, useful if you want to present numbers of artefacts ignoring when there are none found in an area.

length(data) this gives the amount of items in your dataset
data[2] selects the 2nd row
data[-2] all except the 2nd row
data[1:5] the first 5 rows
data[(length(x)-5):length(x)] last 5 rows
data[c(1,3,5)] exact rows
data[x>3] values greater than 3
data[ x< -2 | x > 2] greater or less than some values
which(data == max(data)) identifies which is the maximum value

Spatial Analysis

Getis and Ord’s Gi*

Developed in 1992, this analysis helps identify clusters. It is part of a group of analyses collectivly called LISA (Local Indicators of Spatial Association). It is known as Local G, Gi* or GiStar, it can be found in the spdep library.

localG(x, listw, zero.policy=NULL, spChk=NULL)

See [LocalG](http://cran.r-project.org/web/packages/spdep/spdep.pdf

Hierarchical Cluster Analysis (HCA)

Here we look at the Agnes method (Agglomerative Nesting ), this treats very observation as a single cluster (one artefact clusters at a distance of zero). The two closest clusters are then combined, then the next two closest are combined until only a single cluster (the dataset) remains.

Other types are:

Hierarchical methods: Agnes, Diana, and Mona.

Partitioning methods: Pam, Clara, and Fanny.

library(cluster)
mydata <- read.table(file="mydata.txt", header=TRUE,row.names=1, sep=",")
mydata.agnes <- agnes(mydata)
mydata.agnes.euc <- agnes(mydata, metric="euclidean",method="ward", stand=TRUE)
plot(mydata.agnes.euc)

The text file you read into the mydata dataframe must be a matrix in the following form:


 A   B   C   D   E      A      2   5   4   2      B   2      7   5   1      C   5   7      9   8      D   4   5   9      1      E   2   1   8   1   

Updated: