一、主要问题
中国的官方《统计年鉴》等公开统计数据资料,要用软件自动读取和使用很不方便,因为这些数据文件不是按统计软件要求的所谓“干净”的格式给定。
但是这类数据又非常多,实在让人心痒痒是不是?数据多,但是又没法直接用,这不是让人很难受吗?没事,本文就来解决这个问题。希望能帮到读者。
用excel打开一般的官方“统计年鉴”的数据,一般出现下面的形式(这里只举一例,其它情况类似,大家可仿此处理)。
这个表格要读入R语言处理,遇到的第一个问题就是如何按变量名称来读入数据。表格中,“年份”变量可直接读入,“年末户籍总人口(万人)”等变量可直接读入,但是像第一产业、第二产业、第三产业等,就不是那么方便了。因为这些变量一是处于不同的行,二是相同的变量名称出现多次,而且“国内生产总值”这个名称,是“第一产业”,“第二产业”等变量的前缀。所以,必须进行处理。
那么,如何处理呢?你可以在excel中手动修改,但是这样做太过笨浊了,因为当数据量很大的时候,基本上很难办到。所以本文尝试用编程的方法来处理这个问题。下面分步介绍。
二,如何处理
我们先加载三个包:
library(stringr)#处理字符串需要用到
library(xlsx)#读入excel文件时要用到
library(tidyverse)
1、直接读入数据
这里,我们先将原始数据读入Rstudio,然后编程处理。读入的时候,使用XLSX程序包。我用下面这段代码读入原始数据。读入时,不包含变量名,直接把变量名读入为数据。数据的标题不读入(也可读入后删除)。
setwd("C:/Users/caozhaowen/Desktop/南充市统计年鉴2021/南充统计年鉴2021年")
南充历年主要经济指标 <- read.xlsx("南充统计年鉴-2021:22 附录1:南充市历年主要经济指标2020.xls",
1,startRow = 3,endRow = 45,header = FALSE)
jjzb <- 南充历年主要经济指标
上面的第一行代码目的是设定工作路径,最后一行代码目的是保护数据。中间代码是读入原始数据。(注:南充市统计数据可从南充市统计局官方网站下载)读入后的数据如下图所示:
从上面的图片可以看出,这样的数据无法使用。变量名识别度很低,使用不方便。
2、解决问题的思路
我们想做的事情,就是将数据框中的第一和第二行数据提取出来,作为变量的名称使用。
如何提取?由图一可以看出变量之间的关系,比如,x4的变量名,实际上可以认为是“国内生产总值(万元)第一产业”&