suppressPackageStartupMessages(library(sp)) suppressPackageStartupMessages(library(spacetime)) suppressPackageStartupMessages(library(xts)) # example 0: construction with STFDF: if (require(maps, quietly = TRUE)) { states.m = map('state', plot=FALSE, fill=TRUE) IDs <- sapply(strsplit(states.m$names, ":"), function(x) x[1]) if (require(sf, quietly = TRUE)) { sta = st_as_sf(states.m) row.names(sta) = unique(IDs) states = geometry(as(sta, "Spatial")) if (require(plm, quietly = TRUE)) { data(Produc) yrs = 1970:1986 time = xts(1:17, as.POSIXct(paste(yrs, "-01-01", sep=""), tz = "GMT")) # deselect District of Columbia, polygon 8, which is not present in Produc: Produc.st = STFDF(states[-8], time, Produc[(order(Produc[,2], Produc[,1])),]) #stplot(Produc.st[,,"unemp"], yrs) # example 1: st from long table, with states as Spatial object: # use Date format for time: Produc$time = as.Date(paste(yrs, "01", "01", sep = "-")) xy = coordinates(states[-8]) Produc$x = xy[,1] Produc$y = xy[,2] #using stConstruct, use polygon centroids for location: x = stConstruct(Produc, c("x", "y"), "time") class(x) stplot(x[,,"unemp"]) # alternatively, pass states: Produc$state = gsub("TENNESSE", "TENNESSEE", Produc$state) Produc$State = gsub("_", " ", tolower(Produc$state)) x = stConstruct(Produc, "State", "time", states[-8]) class(x) #stplot(x[,,"unemp"], yrs) if (require(sf, quietly = TRUE)) { # stConstruct multivariable, time-wide fname = system.file("shape/nc.shp", package="sf")[1] nc = as(st_read(fname), "Spatial") timesList = list( BIR=c("BIR74", "BIR79"), NWBIR=c("NWBIR74", "NWBIR79"), SID=c("SID74", "SID79") ) t = xts(1:2, as.Date(c("1974-01-01","1979-01-01"))) nc.st = stConstruct(as(nc, "data.frame"), geometry(nc), timesList, TimeObj = t) } }}}