复杂表格处理之多个表格数据提取至一个表格
有时我们会遇到这样的数据(如下图),即一个Excel表格中镶嵌了多个表格,需要提取其中的部分指标,如果数据量非常大,R提供了便捷的解决方案,代码如下:
> #设置工作空间
> setwd("F:\\affair")
> #读取数据
> shandong <- read.csv("山东省.csv")
> #加载dolyr函数包,利用此包过滤数据
> library(dplyr)
> #查看数据
> head(shandong)
县.市.社会经济主要指标 X X.1 X.2 X.3 X.4 X.5 X.6 X.7
1 山东省
2 指标 单位 长清县 平阴县 商河县
3 1992年 1995年 1999年 1992年 1995年 1999年 1992年
4 乡(镇)个数 个 11 11 11 12 12 11 21
5 村民委员会个数 个 614 613 613 375 375 345 961
6 行政区域土地面积 平方公里 1120 827
X.8 X.9 X.10 X.11 X.12
1
2 济阳县
3 1995年 1999年 1992年 1995年 1999年
4 20 20 20 21 21
5 850 852 847 962 962
6 1076 1157
> names(shandong)[1] <- "zb"
> #提取需要的变量指标
> xian_name <- filter(shandong,zb=="指标")
> tdmj <- filter(shandong,zb=="行政区域土地面积")
> czsr <- filter(shandong,zb=="地方财政收入")
> #创建新的表格
> df_1 <- data.frame(xian_name[,3],tdmj[,3:5],czsr[,3:5])
> df_2 <- data.frame(xian_name[,6],tdmj[,6:8],czsr[,6:8])
> df_3 <- data.frame(xian_name[,9],tdmj[,9:11],czsr[,9:11])
> df_4 <- data.frame(xian_name[,12],tdmj[,12:14],czsr[,12:14])
> #变量赋值
> names(df_1)[1] <- "name"
> names(df_2)[1] <- "name"
> names(df_3)[1] <- "name"
> names(df_4)[1] <- "name"
> names(df_1)[2:4] <- "土地面积"
> names(df_2)[2:4] <- "土地面积"
> names(df_3)[2:4] <- "土地面积"
> names(df_4)[2:4] <- "土地面积"
> names(df_1)[5:7] <- "财政收入"
> names(df_2)[5:7] <- "财政收入"
> names(df_3)[5:7] <- "财政收入"
> names(df_4)[5:7] <- "财政收入"
> #合并数据
> sd_df <- rbind(df_1,df_2,df_3,df_4)
> head(sd_df)
name 土地面积 土地面积 土地面积 财政收入 财政收入 财政收入
1 长清县 1120 4196 6238 16500
2 章丘县 1855 10028 14354 40030
3 胶南县 1894 9500 18200 27018
4 沂源县 1637 3641 4881 10891
5 广饶县 1138 4740 5268 13685
6 莱阳市 1732 7816 8228 20019
> #导出数据
> write.csv(sd_df,"shandong.csv")