创建一个循环来子集数据并合并空间数据图以创建 gif
Posted
技术标签:
【中文标题】创建一个循环来子集数据并合并空间数据图以创建 gif【英文标题】:creating a loop to subset data and merge spatial data maps to create gif 【发布时间】:2021-10-20 14:54:41 【问题描述】:大家好
谁能帮我做一个循环 下面的代码?我基本上通过将新地图创建为 Excel 数据的合并和每年的 shapefile 来制作动态 mac/gif,然后将所有地图合并为 gif。所有这些都有效,但我想知道代码是否可以通过循环函数完成。但是,我真的对他们一无所知,无法弄清楚
数字 1:子集数据
summerhouses2007<-summerhouseprices[,c("Kommune",'2007')] #07
summerhouses2008<-summerhouseprices[,c("Kommune",'2008')] #08
summerhouses2009<-summerhouseprices[,c("Kommune",'2009')] #09
summerhouses2010<-summerhouseprices[,c("Kommune",'2010')] #10
summerhouses2011<-summerhouseprices[,c("Kommune",'2011')] #11
summerhouses2012<-summerhouseprices[,c("Kommune",'2012')] #12
summerhouses2013<-summerhouseprices[,c("Kommune",'2013')] #13
summerhouses2014<-summerhouseprices[,c("Kommune",'2014')] #14
summerhouses2015<-summerhouseprices[,c("Kommune",'2015')] #15
summerhouses2016<-summerhouseprices[,c("Kommune",'2016')] #16
summerhouses2017<-summerhouseprices[,c("Kommune",'2017')] #17
summerhouses2018<-summerhouseprices[,c("Kommune",'2018')] #18
summerhouses2019<-summerhouseprices[,c("Kommune",'2019')] #19
第二个:创建、保存和合并地图为 gif
####checking the summerhouse prices for 2007+ structure######
dim(summerhouses2007)
str(summerhouses2007$Kommune)
str(summerhouses2007$`2007`)
###so we know the "Kommune" variable - character; "2007" variable - numeric###
####merging excel data with shapefile map over municipalities####
kommune$KOMNAVN<-gsub(" Kommune","",kommune$KOMNAVN)
Municipality07<-merge(kommune, summerhouses2007,
by.x=c("KOMNAVN"), by.y=c("Kommune"),all=FALSE)
####checking######
head(Municipality$`2007`)
#### making price intervals#####
p_intervals <- classIntervals(Municipality07$'2007', 5, style="fixed",
fixedBreaks=c(0,1,10000,20000,30000,40000))
####choosing colors according to intervals ####
p_Colours <- findColours(p_intervals,sequential_hcl(5, palette="Reds2"))
####################################################################
### but here we just save them as png files in to the saving path###
###save the 2007.png file########
png(filename="2007.png")
plot(sea,col="cadetblue3")
plot(kommune, col= "beige",add=TRUE)
plot(Municipality, axes=TRUE, col=p_Colours, add=TRUE)
####Adding legend #####
legend("topright",
fill = attr(p_Colours, "palette"),
border="black",
legend=gsub(",", " - ", names(attr(p_Colours, "table"))),
bg ="white",
title="Summerhouse prices 2007")
##### saving the map #######
dev.off()
从 2007 年到 2020 年,一切都在重复。
干杯:)
【问题讨论】:
嗨@Lily22,你知道了吗? 【参考方案1】:如果您已经学会了编写问题中的所有代码,那么您当然能够学习如何使用 for 循环。你可以的!
我建议您尝试一个简单的循环来弄清楚发生了什么。例如,尝试使用元素本身循环遍历向量中的元素。
fruits <- c("apple", "peach", "pear")
for(fruit in fruits)
print(fruit)
你也可以使用他们的索引。
fruits <- c("apple", "peach", "pear")
# Return second element in vector
fruits[2]
for(i in 1:length(fruits))
print(fruits[i])
您可以通过以下方式一次读取数据。我想您可能希望所有代码都在循环的每次迭代中运行。
years <- 2007:2019
for(year in years)
house <- summerhouseprices[,c("Kommune", year)]
更多关于循环的信息:https://www.r-bloggers.com/2015/12/how-to-write-the-first-for-loop-in-r/
【讨论】:
以上是关于创建一个循环来子集数据并合并空间数据图以创建 gif的主要内容,如果未能解决你的问题,请参考以下文章
如何使用for循环或条件在pandas数据框的子集中创建多个回归模型(statsmodel)?