招聘数据分析<一>

11 篇文章 0 订阅

描述性分析部分:

rm(list = ls())  ## 清空工作目录

############# 设置工作路径****
## 使用setwd函数,设置自己的工作路径***
## setwd(.....)

## package: readxl  用于读取Excel文件
## package: ggplot2 用于绘制各类图表
## package: jiebaR 用于分词
library(readxl)
library(ggplot2)
library(jiebaR)

options(scipen = 200)  ## 去除科学计数法

jobinfo = read_excel("jobinfo.xlsx")   ## 读取原始数据

str(jobinfo)  ## 查看数据结构
jobinfo$最低薪资 = as.numeric(jobinfo$最低薪资)  ## 将最低薪资的字符型变量改为数值型变量
jobinfo$最高薪资 = as.numeric(jobinfo$最高薪资)  ## 将最高薪资的字符型变量改为数值型变量

## 图片颜色设置,利用rgb函数产生颜色,用于后续画图使用
col1 = rgb(32,40,51,maxColorValue = 255)   ##某一种黑色
col2 = rgb(172,22,34,maxColorValue = 255)  ##某一种深红
col3 = "indianred " ##某一种浅红
col4 = "dimgrey"   ##某一种灰色

###################### 平均薪资影响因素分析

## 在jobinfo中创建对数平均薪资的变量(去除异方差等影响)
jobinfo$对数平均薪资 = log((jobinfo$最高薪资+jobinfo$最低薪资)/2)

#### 薪资整体情况
## 利用ggplot2中的ggplot画出对数平均薪资直方图
ggplot(data = jobinfo,aes(x=对数平均薪资)) +
        geom_histogram(binwidth = 0.3,fill=col4,colour=col1) +
        labs(y="频数")

## 求出各地区的对数平均薪资的中位数
district = unique(jobinfo$地区)
beijing.med = median(jobinfo$对数平均薪资[jobinfo$地区=="北京"],na.rm = TRUE)
hebei.med = median(jobinfo$对数平均薪资[jobinfo$地区=="河北"],na.rm = TRUE)
shanxi1.med = median(jobinfo$对数平均薪资[jobinfo$地区=="山西"],na.rm = TRUE)
shanxi3.med = median(jobinfo$对数平均薪资[jobinfo$地区=="陕西"],na.rm = TRUE)
shanghai.med = median(jobinfo$对数平均薪资[jobinfo$地区=="上海"],na.rm = TRUE)
shenzhen.med = median(jobinfo$对数平均薪资[jobinfo$地区=="深圳"],na.rm = TRUE)
## 将各地区的median合并到district.med
district.med = c(beijing.med,hebei.med,shanxi1.med,shanxi3.med,shanghai.med,shenzhen.med)
## 将地区按median从小到大排列
district = district[order(district.med)]
## 按照disctrict向量将地区重新划分为以district向量为level的因子向量
jobinfo$地区 = factor(jobinfo$地区,levels = district)

#### 地区对薪资的影响
## 利用箱线图画出,薪资vs地区的分布,箱体的宽度越宽表示样本量越多

ggplot(jobinfo,aes(地区,对数平均薪资)) + 
        geom_boxplot(varwidth = TRUE, fill = c(col4,col4,col4,col3,col3,col3))

#### 公司类别对薪资的影响
## 利用箱线图画出,薪资vs公司类别的分布,箱体的宽度越宽表示样本量越多
ggplot(jobinfo,aes(公司类别,对数平均薪资)) + 
        geom_boxplot(varwidth = TRUE, fill = col4)

#### 公司规模对薪资的影响
## 利用箱线图画出,公司规模vs公司类别的分布,箱体的宽度越宽表示样本量越多
## 将公司规模转化为因子型变量,便于画图
jobinfo$公司规模 = factor(jobinfo$公司规模,levels=c("少于50人","50-150人","150-500人","500-1000人","1000-5000人","5000-10000人","10000人以上"))

ggplot(jobinfo,aes(公司规模,对数平均薪资)) + 
        geom_boxplot(varwidth = TRUE, fill = col4)

#### 要求经验对薪资的影响
## 我们将经验划分为区间进行处理,无经验要求,1-2年,3-4年,5-6年,7-8年,9-10年
## 在jobinfo中创建新的变量,名为经验区间,来存储以上区间
jobinfo$经验区间[jobinfo$经验==0] = "无经验要求"
jobinfo$经验区间[jobinfo$经验==1|jobinfo$经验==2] = "1-2年"
jobinfo$经验区间[jobinfo$经验==3|jobinfo$经验==4] = "3-4年"
jobinfo$经验区间[jobinfo$经验==5|jobinfo$经验==6] = "5-6年"
jobinfo$经验区间[jobinfo$经验==7|jobinfo$经验==8] = "7-8年"
jobinfo$经验区间[jobinfo$经验==9|jobinfo$经验==10] = "9-10年"
## 将经验区间转化为因子型变量,便于画图
jobinfo$经验区间 = factor(jobinfo$经验区间,levels=c("无经验要求","1-2年","3-4年","5-6年","7-8年","9-10年"))

## 利用箱线图画出,经验区间vs公司类别的分布,箱体的宽度越宽表示样本量越多

ggplot(jobinfo,aes(经验区间,对数平均薪资)) + 
        geom_boxplot(varwidth = TRUE, fill = c(col4,col4,"bisque3","bisque3","indianred","indianred")) + 
        labs(x="工作经验要求")


#### 学历对薪资的影响
## 利用箱线图画出,学历vs公司类别的分布,箱体的宽度越宽表示样本量越多
## 将学历转化为因子型变量,便于画图
jobinfo$学历 = factor(jobinfo$学历,levels=c("中专","高中","大专","无","本科","硕士","博士"))

ggplot(jobinfo,aes(学历,对数平均薪资)) + 
        geom_boxplot(varwidth = TRUE, fill = c(col4,col4,col4,col4,"bisque3","bisque3",col3)) + 
        labs(x="学历要求")


############ 统计软件分析

##### 匹配各个公司要求的统计软件

## 首先建立software数据框,用于存放各个公司的软件匹配结果
software = as.data.frame(matrix(0,nrow = length(jobinfo$描述), ncol = 12))  ## 先建立一个0矩阵,行数为观测数,列数为统计软件的个数,并转化为data frame格式
colnames(software) = c("R","SPSS","Excel","Python","MATLAB","Java","SQL","SAS","Stata","EViews","Spark","Hadoop")  ## 将software的data frame的列名改为软件名称

mixseg = worker() ##  按照缺省值,设置分词引擎

## 对每个描述观测进行分词,并存储在software里面,循环次数为总观测数,总观测数可通过length(jobinfo$描述)获取
for (j in 1:length(jobinfo$描述)){

        subdata = as.character(jobinfo$描述[j])  ## 取出每个观测,保存在subdata变量
        fenci = mixseg[subdata]  ##对取出的观测进行分词,保存在分词变量

        ## 设置各个软件的判别条件,以R为例, R.indentify表示r或R是否在fenci这个变量里
        R.identify = ("R" %in% fenci) | ("r" %in% fenci)
        SPSS.identify = ("spss" %in% fenci) | ("Spss" %in% fenci) | ("SPSS" %in% fenci)
        Excel.identify = ("excel" %in% fenci) | ("EXCEL" %in% fenci) | ("Excel" %in% fenci)
        Python.identify = ("Python" %in% fenci) | ("python" %in% fenci) | ("PYTHON" %in% fenci)
        MATLAB.identify = ("matlab" %in% fenci) | ("Matlab" %in% fenci) | ("MATLAB" %in% fenci)
        Java.identify = ("java" %in% fenci) | ("JAVA" %in% fenci) | ("Java" %in% fenci)
        SQL.identify = ("SQL" %in% fenci) | ("Sql" %in% fenci) | ("sql" %in% fenci)
        SAS.identify = ("SAS" %in% fenci) | ("Sas" %in% fenci) | ("sas" %in% fenci)
        Stata.identify = ("STATA" %in% fenci) | ("Stata" %in% fenci) | ("stata" %in% fenci)
        EViews.identify = ("EViews" %in% fenci) | ("EVIEWS" %in% fenci) | ("Eviews" %in% fenci) | ("eviews" %in% fenci) 
        Spark.identify = ("Spark" %in% fenci) | ("SPARK" %in% fenci) | ("spark" %in% fenci)
        Hadoop.identify = ("HADOOP" %in% fenci) | ("Hadoop" %in% fenci) | ("hadoop" %in% fenci)

        ## 判断各个描述变量里面是否有某软件要求,以R为例,第j个描述变量,若R.identify为TRUE时,
        ## software的第j行的R变量为1,反之为0;1表示有要求,0表示无要求
        if (R.identify) software$R[j] = 1
        if (SPSS.identify) software$SPSS[j] = 1
        if (Excel.identify) software$Excel[j] = 1
        if (Python.identify) software$Python[j] = 1
        if (MATLAB.identify) software$MATLAB[j] = 1
        if (Java.identify) software$Java[j] = 1
        if (SQL.identify) software$SQL[j] = 1
        if (SAS.identify) software$SAS[j] = 1
        if (Stata.identify) software$Stata[j] = 1
        if (EViews.identify) software$EViews[j] = 1
        if (Spark.identify) software$Spark[j] = 1
        if (Hadoop.identify) software$Hadoop[j] = 1
}

## 将对数平均薪资和software这两个数据框合并
jobinfo.new = cbind(jobinfo$对数平均薪资,software)
colnames(jobinfo.new) = c("对数平均薪资",colnames(software))

#### 以SQL为例,比较是否掌握SQL技能对对数平均薪资的影响

ggplot(jobinfo.new,aes(as.factor(SQL),对数平均薪资)) + 
        geom_boxplot(fill = c(col4,col3)) + 
        labs(x="是否要求会使用SQL")

save(jobinfo,jobinfo.new,file = "temp.rda")
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SPSS(Statistical Package for the Social Sciences)是一款常用的统计分析软件,广泛应用于社会科学领域的数据分析。下面是一个SPSS招聘数据分析实例的详解: 假设一个公司想要分析其招聘流程中的数据,以了解招聘效果和改进招聘策略。他们收集了以下数据:候选人的个人信息(如性别、年龄、学历等)、应聘岗位、面试结果、录用结果等。 首先,可以使用SPSS进行数据的导入和清洗。将数据导入SPSS软件,并对数据进行清洗,包括删除重复数据、处理缺失值等。 接下来,可以使用SPSS进行描述性统计分析。通过计算各个变量的均值、标准差、频数等统计指标,可以对候选人的个人信息进行整体描述,例如了解候选人的平均年龄、学历分布等。 然后,可以使用SPSS进行相关性分析。通过计算各个变量之间的相关系数,可以了解不同变量之间的关系。例如,可以分析性别与录用结果之间的相关性,以确定是否存在性别歧视。 此外,可以使用SPSS进行回归分析。通过建立回归模型,可以预测候选人的录用结果与其他变量之间的关系。例如,可以建立一个回归模型,预测候选人的录用结果与其学历、面试结果等因素之间的关系。 最后,可以使用SPSS进行数据可视化。通过绘制柱状图、折线图、散点图等图表,可以直观地展示数据分析结果,帮助公司更好地理解和解释数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值