library(“rJava”)
library(“xlsx”)
library(“tidyverse”)
library(“baidumap”)
library(“seg”)
pudong <- read.xlsx(“F:/a series of documents/sunlaoshikejian/空间分析1/村居人口.xlsx”,sheetName = “pudong”,header = F,encoding = “UTF-8”,stringsAsFactors = FALSE,check.names = FALSE)
head(pudong)
## 1 2 3 4 5 6 7
## 1 序号 城市名称 城市代码 辖区 辖区代码 区名称 区代码
## 2 id cityname citycode area areacode district districtcode
## 3 3092 上海 3.1e+11 市辖区 3.101e+11 浦东新区 3.10115e+11
## 4 3093 上海 3.1e+11 市辖区 3.101e+11 浦东新区 3.10115e+11
## 5 3094 上海 3.1e+11 市辖区 3.101e+11 浦东新区 3.10115e+11
## 6 3095 上海 3.1e+11 市辖区 3.101e+11 浦东新区 3.10115e+11
## 8 9 10 11 12
## 1 街道名称 街道代码 居委会名称 居委会代码 城乡分类
## 2 subdist subdistcode community communitycode areatype
## 3 潍坊新村街道 310115004000 潍坊一村居委会 310115004001 111
## 4 潍坊新村街道 310115004000 潍坊二村居委会 310115004002 111
## 5 潍坊新村街道 310115004000 潍坊三村居委会 310115004003 111
## 6 潍坊新村街道 310115004000 潍坊四村居委会 310115004004 111
## 13 14 15 16 17
## 1 户籍人口 <NA> 六普 <NA> <NA>
## 2 户数 人数 常住人口 外来常住人口 <NA>
## 3 2492 4934 5071 1461 <NA>
## 4 2305 4360 6664 1728 <NA>
## 5 1286 3626 3433 843 <NA>
## 6 1933 4341 4748 1179 <NA>
#转化成数据框
pudongdt <- as.data.frame(pudong)
#进行清洗,添加列名
pudong1 <- pudongdt[,c(8,9,15,16)]
names(pudong1)=c(“街道名称”,“街道代码”,“常住人口”,“外来人口”)
pudong2 <- pudong1[-c(1,2),]
#删除行缺失值
pudong2 <- pudong2[complete.cases(pudong2),]
pudong2 <- na.omit(pudong2)
pudong2\(常住人口 <- as.numeric(pudong2\)常住人口)
pudong2\(外来人口 <- as.numeric(pudong2\)外来人口)
pudong2\(街道名称 <- as.factor(pudong2\)街道名称)
pudong2\(local <- pudong2\)常住人口-pudong2$外来人口
#计算浦东各个街道本地和外地的人口数
pudong3 <- pudong2 %>%
select(街道名称,local,外来人口) %>%
group_by(街道名称) %>%
summarise(本地 = sum(local),外来 = sum(外来人口))
head(pudong3)
## # A tibble: 6 x 3
## 街道名称 本地 外来
## <fct> <dbl> <dbl>
## 1 北蔡镇 141723 102111
## 2 曹路镇 68202 117588
## 3 川沙新镇 166197 142495
## 4 大团镇 60709 10453
## 5 东明路街道 98084 23365
## 6 高东镇 34978 75574
#设置百度地图全局变量 options(baidumap.key = ‘HNsw8tcCYIUegant8dDUvnDxbA4wUbta’)
#将每一个变量前面加一个“上海市浦东新区”,防止搜索到其他省同名地区
index <- paste(rep(“上海市浦东新区”,37),pudong3$街道名称,sep = “”,collapse = “,”)
#index是一个长变量,将其按逗号切割,并且解绑列表形式
index1 <- unlist(strsplit(index,“,”))
#创建一个空的数据框,然后按照index1的索引遍历,然后取每一次
#遍历结果的第一个,然后将所有的结果合并成一个数据框
mydata <- NULL
jiedao <- for(i in 1:37){
address <- getPlace(index1[i])
mydata <- rbind(mydata,address[1,])
}
#在这个数据框中我们只需要经度和纬度的变量
mydata1 <- mydata[,c(3,4)]
#按照列将前面我们计算好的pudong3数据框进行合并得到总的结果
pudong_final <- cbind(pudong3,mydata1)
#将文件写到本地
local_file <- write.csv(pudong_final,“F:/a series of
documents/sunlaoshikejian/local.csv”)
head(pudong_final)
#下一次可以采用下面的命令读入
#pudong_final <- read.csv(“F:/a series of
documents/sunlaoshikejian/local.csv”,header = T)
## 街道名称 本地 外来 lat lon
## 1 北蔡镇 141723 102111 31.18817 121.5610
## 2 曹路镇 68202 117588 31.28449 121.6735
## 3 川沙新镇 166197 142495 31.19895 121.7024
## 4 大团镇 60709 10453 30.97194 121.7439
## 5 东明路街道 98084 23365 31.15265 121.5342
## 6 高东镇 34978 75574 31.33208 121.6300
#进行居住隔离的计算
#D指数
D <- dissim(data = pudong_final[,c(“本地”,“外来”)])$d
D
#论文中计算了上海市的居住隔离指数为0.387405
#浦东区的居住隔离指数为0.2919161
#P指数
P <- isp(x = pudong_final[,c(“lon”,“lat”)],data = pudong_final[,c(“本地”,“外来”)])
P
#论文中全上海的P指数为1.000229,此处为0.99
#H指数
H <- spseg(x = pudong_final[,c(“lon”,“lat”)],data = pudong_final[,c(“本地”,“外来”)])
H
## [1] 0.2919161
## [1] 0.997163
##
## Reardon and O'Sullivan's spatial segregation measures
##
## Dissimilarity (D) : 0.0084
## Relative diversity (R): -8e-04
## Information theory (H): -6e-04
## Exposure/Isolation (P):
## 本地 外来
## 本地 0.6046050 0.3953950
## 外来 0.6024162 0.3975838
## --
## The exposure/isolation matrix should be read horizontally.
## Read 'help(spseg)' for more details.