unemp
データが行に配置されている場合、splot() を使用してラティス チャートを作成するにはどうすればよいyear
ですCSO_NAME)
か?
これは、マップをロードしてデータをマージするための私のコードです:
library(rgdal)
library(sqldf)
# Import map and assign data.shape@data to spdata
data.shape<-readOGR(dsn="folder",layer="mylayer")
spdata <- data.shape@data
# Load statistics data
unemp <- read.csv("cso_unemployment_rwise.csv")
# Merge data with spdata
spdata <- sqldf("select sp.*, cu.year, cu.unemp from spdata sp join unemp cu on (sp.nazok_a = cu.CSO_NAME) ")
# Build new spdata
spdata_merged <- SpatialPolygonsDataFrame(data.shape, spdata)
# This fails: length(Sr@polygons) == nrow(data) is not TRUE
に似たものを使用できると思いformula
ました。たとえば、棒グラフのこの例のように:
barchart(spdata$year~spdata$unemp|spdata$CSO_NAME)
しかし、データをポリゴンとマージできないため、次のステップがどうなるかわかりません。この場合、データを簡単に転置してから、次のようなものを使用できます。
spplot(spdata,c("y2009","y2010","y2011","y2012",...))
再現可能な例
以下は、stats_data
グループ化変数が 1 つだけのサンプル データと、グループ化変数year
が2stats_data2
つのサンプル データです。year
sex
# Get map
con <- url("http://gadm.org/data/rda/CZE_adm2.RData")
print(load(con))
close(con)
gadm_data <- gadm@data
# Create sample Data
stats_data <-
data.frame(
as.character(rep(gadm_data$NAME_2,3)),
as.numeric(round(runif(3*length(gadm_data$NAME_2), 0, 1),digits=3)*100),
as.factor(rep(c(2010,2011,2012),length(gadm_data$NAME_2)))
)
names(stats_data) <- c("NAME_2","UNEMPR","YEAR") # str(stats_data)
# Add each year to map data
library("sqldf")
gadm_data <- sqldf("select gd.*, sd.UNEMPR as u2010 from gadm_data gd join stats_data sd using (NAME_2) where year = 2010")
gadm_data <- sqldf("select gd.*, sd.UNEMPR as u2011 from gadm_data gd join stats_data sd using (NAME_2) where year = 2011")
gadm_data <- sqldf("select gd.*, sd.UNEMPR as u2012 from gadm_data gd join stats_data sd using (NAME_2) where year = 2012")
gadm@data <- gadm_data
# Plot
spplot(gadm,c("u2010","u2011","u2012"),at=c(0,10,20,30,40,50,70,100))
# Create sample Data, two factor variables
stats_data2 <-
data.frame(
as.character(rep(gadm_data$NAME_2,6)),
as.numeric(round(runif(6*length(gadm_data$NAME_2), 0, 1),digits=3)*100),
as.factor(rep(c(2010,2011,2012),2*length(gadm_data$NAME_2))),
as.factor(c("f","m"))
)
names(stats_data2) <- c("NAME_2","UNEMPR","YEAR","SEX") # str(stats_data2)
を使用して醜いデータ操作を行うことはできますが、sqldf
要素が追加されると、これはますます複雑になります。値が 2 と 10 の 2 つの因子があるとしたら、20 列を追加する必要があります。
R バージョン 2.15.1、Windows XP、SP3