创建一个循环来子集数据并合并空间数据图以创建 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的主要内容,如果未能解决你的问题,请参考以下文章

使用熊猫循环合并大量csv文件[重复]

如何使用for循环或条件在pandas数据框的子集中创建多个回归模型(statsmodel)?

为数据框的子集创建预测并附加到原始文件

Pandas:将 DataFrame 与嵌套数组结合或合并 JSON 输出

Google 表格 - 循环通过表格合并数据

合并循环中创建的数据(python)