Geocomputation with R课后习题答案(第三章)

#Geocomputation with R课后练习题,第三章
setwd("F:\\shunyi")
library(pacman)
p_load(sf,tmap,spData,tidyverse,dplyr,units,magrittr)

#加载数据
data(us_states)
data(us_states_df)

#1、创建一个新对象us_states_name,该对象仅包含us_states对象Name列
#us_states_name为字符串向量,没有空间属性
us_states_name<-us_states$NAME
# us_states_name<-st_sf(us_states,geometry=us_states$geometry)
#运用管道符创建保留了空间属性
us_states_name<-us_states%>%select("NAME")

#2、从us_states对象中选取人口列,尝试用三种方法
#采用中括号提取
pop1<-us_states[,c("total_pop_10","total_pop_15")]
#采用select()函数提取
pop2<-select(us_states,c(total_pop_10,total_pop_15))
#采用辅助函数contains()和starts_with()
pop3<-us_states%>%select(contains("pop"))
pop4<-us_states%>%select(starts_with("total"))

#3.1找到中西部地区
midwest<-us_states%>%filter(REGION=="Midwest")
#3.2找到拥有25万平方公里以下和2015年人口超过5百万的西部地区
#设置单位
a<-set_units(250000,km^2)
west<-us_states%>%
  filter(REGION=="West")%>%
  filter(AREA<a&total_pop_15>5000000)
#3.3面积大于15万平方公里或2015年总人口超过7000000的南方
b<-set_units(150000,km^2)
south<-us_states%>%
  filter(REGION=="South")%>%
  filter(AREA>b | total_pop_15>7000000)

#4、2015年总人口,最大值,最小值
tpop<-us_states%>%
  st_drop_geometry()%>%
  select(total_pop_15)%>%
  summarise(pop=sum(.),max=max(.),min=min(.))

#5、每个地区有多少州
NAMEnum<-us_states%>%
  st_drop_geometry()%>%
#  select(NAME,REGION)%>%
  group_by(REGION)%>%
  summarise(NAMEm=n())

#6、2015年各地区的最低、最高和总人口分别是?
regpop<-us_states%>%
  st_drop_geometry()%>%
#  select(total_pop_15,REGION)%>%
  group_by(REGION)%>%
  summarise(min=min(total_pop_15),max=max(total_pop_15),tot=sum(total_pop_15))

#7、将us_states_df加入到us_states中
us_states_stats<-us_states%>%left_join(us_states_df,by=c(NAME="state"))

#8、找到us_states_df比us_states多的两列
duo<-anti_join(us_states_df,us_states,by=c("state"="NAME"))

#9、2010、2015年各州人口密度
us_states%<>%mutate(popdes10=total_pop_10/as.numeric(AREA),
                    popdes15=total_pop_15/as.numeric(AREA))

#10、每个州在2010-2015年间的变化率
us_states%<>%mutate(changepop=(popdes15-popdes10)/total_pop_10*100)

#11、将列名改为小写
names(us_states)<-tolower(names(us_states))

#12、创建新对象us_states_sel,只有两个变量median_income_15和geometry
us_states_sel<-us_states_stats%>%select(Income=median_income_15,geometry)
posted @ 2021-08-13 11:27  陈其永  阅读(142)  评论(0编辑  收藏  举报