Geocomputation with R課後習題答案(第三章)
阿新 • • 發佈:2021-08-13
#Geocomputation with R課後練習題,第三章 setwd("F:\\shunyi") library(pacman) p_load(sf,tmap,spData,tidyverse,dplyr,units) #載入資料 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")) #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)