分析一下新能源电动车公司招聘需求
[1] "zh_TW.UTF-8/zh_TW.UTF-8/zh_TW.UTF-8/C/zh_TW.UTF-8/en_US.UTF-8"
# 在最开始设置一下ggplot的主题颜色 ------------------ ##########
library(ggplot2)
library(ggthemr)
ggthemr('dust') # 设置其中一种样式# 读取文件, 一个Excel中多个sheet
sheets <- readxl::excel_sheets("新能源汽车招聘.xlsx")
x <- lapply(sheets, function(X) readxl::read_excel("新能源汽车招聘.xlsx", sheet = X))
names(x) <- sheets nio_sr <- data.frame(x[1]) # 蔚来官网社招
nio_ur <- data.frame(x[2]) # 蔚来官网校招
lixiang <- data.frame(x[3]) # 理想招聘
xiaopeng_sr <- data.frame(x[4]) # 小鹏社招
xiaopeng_ur <- data.frame(x[5]) # 小鹏校招
wm_ur <- data.frame(x[6]) # 威马校招
zhilian <- data.frame(x[7]) # 智联招聘简单查看一下蔚来汽车校招需求最多的岗位: 新能源汽车销售、品质工程师
'data.frame': 2292 obs. of 2 variables:
$ Var1: Factor w/ 2292 levels ".NET开发专家 (MJ008821)",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Freq: int 1 1 1 1 1 1 1 1 1 1 ...
这边,用智联的大表职位名称太过琐碎,不太好通过名称来对职能进行分类,用蔚来的校招的“职能支持方向”会比较好分类 👇下面主要通过职能支持方向来分类看一下
Attaching package: ‘dplyr’
The following objects are masked from ‘package:plyr’:
arrange, count, desc, failwith, id, mutate, rename, summarise, summarize
The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
'data.frame': 754 obs. of 12 variables:
$ 蔚来官网校招.id : num 1 2 3 4 5 6 7 8 9 10 ...
$ 蔚来官网校招.jid : Factor w/ 754 levels "009f063f-f39b-474c-91c8-54cfaf6d4a48",..: 276 575 142 722 367 236 453 237 165 681 ...
$ 蔚来官网校招.职位名称 : Factor w/ 560 levels ".Net开发工程师",..: 105 534 448 207 309 224 33 78 68 37 ...
$ 蔚来官网校招.类型 : Factor w/ 2 levels "全职","实习": 1 1 1 1 1 1 1 1 1 1 ...
$ 蔚来官网校招.学历 : Factor w/ 4 levels "本科","博士",..: 1 1 1 1 1 1 1 2 2 2 ...
$ 蔚来官网校招.部门 : Factor w/ 5 levels "产品设计与研发",..: 1 3 1 1 1 1 1 1 1 1 ...
$ 蔚来官网校招.职能支持方向: Factor w/ 16 levels "产品项目方向",..: 8 13 12 12 12 6 8 8 8 8 ...
$ 蔚来官网校招.地址 : Factor w/ 2 levels "圣何塞","蔚来11": NA NA NA NA NA NA NA NA NA NA ...
$ 蔚来官网校招.数量 : num 0 0 0 0 0 0 0 0 0 0 ...
$ 蔚来官网校招.城市id : num 154891 150843 150843 150844 150844 ...
$ 蔚来官网校招.发布时间 : POSIXct, format: "2021-10-22 13:48:07" "2021-09-30 20:49:00" "2021-09-24 23:14:14" "2021-09-24 23:12:35" ...
$ 蔚来官网校招.职位描述 : Factor w/ 337 levels "岗位职责: 1. 开发并实现量产级别的行为规划和运动规划算法2. 结合语义地图和感知结果实时预测周边参与者行为(车辆,"| __truncated__,..: 1 325 136 221 224 273 3 60 51 74 ...
可以看到一个比较整体的组织架构:5个部门下面包含16个职能方向
产品设计与研发 工业化 管理与支持 区域公司 用户与服务
200 69 1 397 87
产品项目方向 交付运营方向 空间运营方向 其它 三电新能源方向
1 66 74 32 37
设计方向 售后服务(服务代表)方向 数字技术方向 蔚来产品专家方向 蔚来顾问方向
8 33 82 95 127
用户服务方向 整车研发制造方向 职能支持方向 质量管理方向 智能硬件方向
65 78 8 14 6
自动驾驶方向
28
部门 - 蔚来汽车各部门的招聘数量 - 招聘需求最大的部门是:区域公司、产品设计与研发
bm_df <- data.frame(table(nio_ur$蔚来官网校招.部门))
bm_df <- bm_df %>%
rename(数量 = Freq, 部门 = Var1)
bm_label <- as.vector(bm_df$部门)## 转成向量,否则图例的标签可能与实际顺序不一致
bm_label <- paste(bm_label, "(", round((bm_df$数量/sum(bm_df$数量))*100, 2), "%)", sep = "") #用 round() 对结果保留三位小数
# Basic piechart
ggplot(bm_df, aes(x="", y=数量, fill=部门)) +
geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
geom_text(aes(label = 数量),
position = position_stack(vjust = 0.5)) +
scale_fill_discrete(breaks = bm_df$部门, labels = bm_label)+
theme(text = element_text(family = "Heiti TC Light"))## ----------- 中文一直显示不出来 --------------
# 查看各个部门包含的职能方向
bm_ch <- a %>%
select(蔚来官网校招.部门,蔚来官网校招.职能支持方向)%>%
count(蔚来官网校招.部门,蔚来官网校招.职能支持方向)
# # 用treemap来可视化一下
# library(treemap)
# treemap(dtf = bm_ch,
# index = c("蔚来官网校招.部门", "蔚来官网校招.职能支持方向"),
# vSize = "n",
# vColor = "蔚来官网校招.部门")比较直观的可以看出各个职能包含在哪些部门下
table_tab1 <- table(a$蔚来官网校招.职能支持方向, a$蔚来官网校招.部门)
hdd <- data.frame(table_tab1)
# Heatmap
ggplot(hdd, aes(Var1, Var2, fill= Freq)) +
geom_tile()+
theme(text = element_text(size=10, family = "Heiti TC Light"),
axis.text.x = element_text(angle=30, hjust=1))+
ylab("部门")+
xlab("职能支持方向")比较细致的看各个部门中各个职能的招聘需求
ggplot(bm_ch1, aes(蔚来官网校招.职能支持方向, n)) +
geom_col() +
geom_text(aes(label=n), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10, family = "Heiti TC Light"),
axis.text.x = element_text(angle=30, hjust=1))+
facet_wrap( ~ 蔚来官网校招.部门)bm_ch2 <- bm_ch%>%
filter(蔚来官网校招.部门 == c("工业化","用户与服务"))
ggplot(bm_ch2, aes(蔚来官网校招.职能支持方向, n)) +
geom_col() +
geom_text(aes(label=n), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10, family = "Heiti TC Light"),
axis.text.x = element_text(angle=30, hjust=1))+
facet_wrap( ~ 蔚来官网校招.部门)职能方向
# 简单的画个图
library(ggplot2)
library(dplyr)
library(forcats) # forecats 库是 tidyverse 中的一个库,专门用于处理 R 中的因子
draw_df <- data.frame(table(nio_ur$蔚来官网校招.职能支持方向))
draw_df %>%
mutate(Var1 = fct_reorder(Var1, Freq)) %>% # 默认:从下到上升序;从下到上降序:desc(Freq)
ggplot(aes(x = Var1, y = Freq))+
geom_col()+
coord_flip()+
geom_text(aes(label=Freq), position=position_dodge(width=0.9)) +
theme(text = element_text(family = "Heiti TC Light"))+
ylab("数量")+
xlab("职能支持方向")职能方向:未蔚来顾问方向
分析: - 需要什么人(包函哪些岗位) - 需要什么技能 - 需要大学的课
subset1:建立一个职能、岗位名称、数量
# 建立一个职能、岗位名称、数量
subset_nio_ur <- nio_ur %>%
select(c(蔚来官网校招.职位名称,蔚来官网校招.职能支持方向))%>%
group_by(蔚来官网校招.职位名称,蔚来官网校招.职能支持方向)%>%
summarise(num=n())`summarise()` has grouped output by '蔚来官网校招.职位名称'. You can override using the `.groups` argument.
# 看一下各个职能的每个岗位的需求数量
ggplot(subset_nio_ur, aes(蔚来官网校招.职位名称, num)) +
geom_col(aes(colour=蔚来官网校招.职能支持方向)) +
theme(text = element_text(family = "Heiti TC Light"))+
facet_wrap( ~ 蔚来官网校招.职能支持方向)各个职能方向所所包含的职位
[1] "蔚来顾问-威海" "蔚来顾问-威海" "蔚来顾问-天津滨海" "蔚来顾问-天津" "蔚来顾问-合肥" "蔚来顾问-成都"
职位名称:[1] “蔚来顾问-威海” “蔚来顾问-威海” “蔚来顾问-天津滨海” “蔚来顾问-天津” “蔚来顾问-合肥” “蔚来顾问-成都”
[1] "蔚来产品专家-合肥" "蔚来产品专家-成都" "蔚来产品专家-北京" "蔚来产品专家-常州" "蔚来产品专家-慈溪" "蔚来产品专家-达州"
[1] "规划算法工程师" "车载高性能计算平台开发工程师" "高性能计算平台研究员" "电源网络研究员"
[5] "车载网络研究员" "BI工程师"
[1] "研发流程体系工程师" "内饰工程师" "外饰工程师" "智能整车控制软件工程师"
[5] "EOL工程师" "机械工程开发工程师"
[1] "空间运营专员-长沙" "空间运营专员-南通" "空间运营专员-合肥" "空间运营专员-东莞" "空间运营专员-西安" "空间运营专员-北京"
[1] "交付运营专员-青岛" "交付运营专员-青岛" "交付运营专员-南通" "交付运营专员-昆明" "交付运营专员-福州" "交付运营专员-嘉兴"
[1] "精益流程专员" "数据分析工程师" "用户发展专员-杭州/绍兴" "市场助理 - NIO Life"
[5] "公共关系助理" "企业传播培训生"
[1] "电解液开发工程师" "电源产品安全工程师"
[3] "硬件开发(电力电子)工程师-博士-上海" "硬件开发(电力电子)工程师-上海"
[5] "硬件开发(信号电子)工程师-电驱系统-上海" "功率模块设计工程师"
解决需要什么人:职能方向和学历关系
people_level <- people_level %>%
rename(数量 = Freq, 学历 = Var1)
# 设置百分比
people_level_label <- as.vector(people_level$学历)## 转成向量,否则图例的标签可能与实际顺序不一致
people_level_label <- paste(people_level_label, "(", round((people_level$数量/sum(people_level$数量))*100, 2), "%)", sep = "") #用 round() 对结果保留三位小数
# Basic piechart
ggplot(people_level, aes(x="", y=数量, fill=学历)) +
geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
geom_text(aes(label = 数量),
position = position_stack(vjust = 0.5)) +
scale_fill_discrete(breaks = people_level$学历, labels = people_level_label)+
theme(text = element_text(family = "Heiti TC Light"))
# 最后再来用这个做一下整体的调色 ------------------ ##########
library(ggthemr)
ggthemr('dust') # 设置其中一种样式
# p0 # 展示这个主题下得到的图形
本科 博士 大专 硕士
产品项目方向 1 0 0 0
交付运营方向 66 0 0 0
空间运营方向 74 0 0 0
其它 28 0 0 4
三电新能源方向 1 11 0 25
设计方向 7 0 0 1
售后服务(服务代表)方向 1 0 32 0
数字技术方向 46 9 0 27
蔚来产品专家方向 95 0 0 0
蔚来顾问方向 127 0 0 0
用户服务方向 63 0 0 2
整车研发制造方向 40 7 0 31
职能支持方向 7 0 0 1
质量管理方向 6 1 0 7
智能硬件方向 0 0 0 6
自动驾驶方向 10 1 0 17
## side-by-side
ggplot(data = a, aes(x = 蔚来官网校招.职能支持方向, fill = 蔚来官网校招.学历)) +
geom_bar(position = "dodge")+
# geom_text(aes(label=n), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10, family = "Heiti TC Light"),
axis.text.x = element_text(angle=30, hjust=1))# 测试一下字符串的提取,便于后面提取“岗位职责”和“岗位要求”
library(stringr)
text = "岗位职责: 1. 开发并实现量产级别的行为规划和运动规划算法2. 结合语义地图和感知结果实时预测周边参与者行为(车辆,行人等);3. 结合大规模路测数据完善算法模型。岗位要求:1. 在相关领域(机器人,软件工程,数学优化,电子与计算机等)获得BS/MS/PhD;2. 精通linux环境下C++编程,具有良好的OOP设计习惯,有在相关系统(机器人,无人机,无人车)平台上开发/实现的相关经验 ;3. 熟悉规划或者轨迹生成算法(A*,RRT,RRT*)以及决策优化相关模型(MDP, POMDP等);4 具有良好的数学基础及优化相关的知识。加分项:1. 具有RTOS相关开发经验;2. 具有仿真器相关开发经验;3. 实时定位或者地图相关经验;深度学习以及强化学习相关经验 。"
# aa <- str_extract(text, "(岗位职责).*?(?=岗位要求)") # 提取“岗位职责”到“岗位要求”,但不包含“岗位要求”
# aa <- str_extract(text, "(岗位职责).*?(岗位要求)") # 提取“岗位职责”到“岗位要求”,但包含“岗位职责”和“岗位要求”
aa <- str_extract(text, "(?<=岗位职责:).*?(?=:)") # 提取“岗位职责:”到“岗位要求”,中间的字符
str(aa) chr " 1. 开发并实现量产级别的行为规划和运动规划算法2. 结合语义地图和感知结果实时预测周边参与者行为(车辆,行人等);"| __truncated__
test_df <- nio_ur %>%
mutate(岗位职责 = str_extract(蔚来官网校招.职位描述, "(?<=岗位职责).*?(?=岗位要求)"))%>%
mutate(工作内容 = str_extract(蔚来官网校招.职位描述, "(?<=工作内容).*?(?=任职要求)"))%>%
mutate(任职要求 = str_extract(蔚来官网校招.职位描述, "(任职要求).*"))%>%
mutate(加分项 = str_extract(蔚来官网校招.职位描述, "(加分项).*")) 蔚来官网校招.id 蔚来官网校招.jid 蔚来官网校招.职位名称 蔚来官网校招.类型
0.0000000 0.0000000 0.0000000 0.0000000
蔚来官网校招.学历 蔚来官网校招.部门 蔚来官网校招.职能支持方向 蔚来官网校招.地址
0.0000000 0.0000000 0.0000000 0.9946950
蔚来官网校招.数量 蔚来官网校招.城市id 蔚来官网校招.发布时间 蔚来官网校招.职位描述
0.0000000 0.0000000 0.0000000 0.0000000
岗位职责 工作内容 任职要求 加分项
0.9933687 0.5198939 0.2625995 0.9933687
# 挑选出“任职要求”不是NA的进一步分析
job_req <- test_df %>%
select(c(蔚来官网校招.职位名称,蔚来官网校招.学历,蔚来官网校招.部门,蔚来官网校招.职能支持方向,任职要求))%>%
filter(!is.na(任职要求))
apply(job_req,2,function(x){sum(is.na(x))/nrow(job_req)}) 蔚来官网校招.职位名称 蔚来官网校招.学历 蔚来官网校招.部门 蔚来官网校招.职能支持方向
0 0 0 0
任职要求
0
# 加入自定义的字典
jieba_tokenizer <- worker(user="dict/user_dict.txt", stop_word = "dict/stop_words.txt")
# 設定斷詞function
customized_tokenizer <- function(t) {
lapply(t, function(x) {
tokens <- segment(x, jieba_tokenizer)
tokens <- tokens[nchar(tokens)>1]
return(tokens)
})
}# 断词
library(tidyr)
library(tidytext)
jobtoken <- job_req %>% unnest_tokens(word, 任职要求, token=customized_tokenizer)
head(jobtoken)# 数据的清理
# 过滤特殊字元
data_select <- jobtoken %>%
filter(!grepl('[[:punct:]]',word)) %>% # 去标点符号
filter(!grepl("['^0-9']",word)) %>% # 去数字
filter(nchar(.$word)>1)
# 算每个 职能支持方向 的词频
# word_count:artDate,word,count
word_count <- data_select %>%
select(蔚来官网校招.职能支持方向,word) %>%
group_by(蔚来官网校招.职能支持方向,word) %>%
summarise(count=n()) %>%
filter(count>3) %>% # 過濾出現太少次的字
arrange(desc(count))`summarise()` has grouped output by '蔚来官网校招.职能支持方向'. You can override using the `.groups` argument.
可以用文字云大概看一下各个“职能支持方向”需要的技能方向 后续需要跟细致的筛选,各个岗位的技能需求
# library(wordcloud2)
# # 画出 "数字技术方向" 文字云
# word_count %>%
# filter(!(word %in% c("具备","能力","优先","熟悉","要求","任职","经验","具有","相关","了解"))) %>%
# filter(蔚来官网校招.职能支持方向 == "数字技术方向") %>%
# select(word,count) %>%
# group_by(word) %>%
# summarise(count = sum(count)) %>%
# arrange(desc(count)) %>%
# filter(count>10) %>% # 过滤掉出现太少的字
# wordcloud2()# # 画出 "蔚来产品专家方向" 文字云
# word_count %>%
# filter(!(word %in% c("具备","能力","优先","熟悉","要求","任职","经验","具有","相关"))) %>%
# filter(蔚来官网校招.职能支持方向 == "蔚来产品专家方向") %>%
# select(word,count) %>%
# group_by(word) %>%
# summarise(count = sum(count)) %>%
# arrange(desc(count)) %>%
# filter(count>10) %>% # 过滤掉出现太少的字
# wordcloud2()👀岗位的细致技能需求分析
'data.frame': 2720 obs. of 16 variables:
$ 智联招聘.职位名称: Factor w/ 2292 levels ".NET开发专家 (MJ008821)",..: 170 1693 380 441 340 340 1846 2285 722 721 ...
$ 智联招聘.公司名称: Factor w/ 199 levels "安徽爱瑞特新能源专用汽车股份有限公司",..: 55 50 165 44 185 185 55 55 44 44 ...
$ 智联招聘.公司规模: Factor w/ 7 levels "100-299人","1000-9999人",..: 3 4 2 2 2 2 3 3 2 2 ...
$ 智联招聘.学历 : Factor w/ 9 levels "本科","博士",..: 1 4 4 1 1 1 1 1 1 1 ...
$ 智联招聘.行业 : Factor w/ 39 levels "保险业","电力/水利/热力/燃气",..: 23 23 23 23 23 23 23 23 23 23 ...
$ 智联招聘.公司性质: Factor w/ 10 levels "股份制企业","国企",..: 4 4 1 2 2 2 4 4 2 2 ...
$ 智联招聘.发布时间: Factor w/ 2175 levels "2020-11-13 16:42:33",..: 1400 571 364 1 442 442 1400 1400 1 1 ...
$ 智联招聘.薪资范围: Factor w/ 213 levels "0-0","0-1000",..: 61 69 183 11 190 190 11 11 11 11 ...
$ 智联招聘.工作城市: Factor w/ 4 levels "北京","广州",..: 3 1 1 1 3 4 3 4 1 1 ...
$ 智联招聘.工作类型: Factor w/ 3 levels "兼职/临时","全职",..: 2 2 2 2 2 2 2 2 2 2 ...
$ 智联招聘.工作年限: Factor w/ 7 levels "1-3年","10年以上",..: 4 1 4 5 4 4 1 4 5 4 ...
$ 智联招聘.职位描述: Factor w/ 2537 levels "\"1.根据公司提供的线索资源,电话/微信联系客户,挖掘客户需求,邀请客户到店租车、买车;<br>2.负责进店客户接待咨询"| __truncated__,..: 729 826 2055 790 730 730 1629 788 789 716 ...
$ 智联招聘.城市 : Factor w/ 29 levels "北京","成都",..: 19 1 5 1 14 14 19 19 1 1 ...
$ 智联招聘.融资情况: Factor w/ 8 levels "不需要融资","天使轮",..: 4 NA NA 4 NA NA 4 4 4 4 ...
$ 智联招聘.招聘人数: Factor w/ 36 levels "1","10","100",..: 1 24 1 1 12 12 12 12 1 1 ...
$ 智联招聘.公司地址: Factor w/ 758 levels "-","15号线","21号线",..: 580 612 172 100 272 272 580 580 98 98 ...
hy_data <- zl_data%>%
select(智联招聘.行业)%>%
filter(!is.na(智联招聘.行业))%>%
group_by(智联招聘.行业)%>%
summarise(num = n())%>%
top_n(10)Selecting by num
hy_data %>%
mutate(智联招聘.行业 = fct_reorder(智联招聘.行业, num)) %>% # 默认:从下到上升序;从下到上降序:desc(Freq)
ggplot(aes(x = 智联招聘.行业, y = num))+
geom_col()+
coord_flip()+
geom_text(aes(label=num), position=position_dodge(width=0.9), vjust=1.5) +
theme(text = element_text(family = "Heiti TC Light"))+
ylab("数量")+
xlab("智联招聘.行业")薪资的整体水平
money_data <- zhilian%>%
separate(智联招聘.薪资范围, c("最低薪资","最高薪资"),"-")%>%
mutate(最低薪资 = as.numeric(最低薪资))%>%
mutate(最高薪资 = as.numeric(最高薪资))
head(money_data)
ggplot(money_data, aes(x = x)) +
geom_density(aes(x=最低薪资),fill="#83d4d2",size=0.5, alpha=0.5) +
geom_density(aes(x=最高薪资),fill="#e88b66",size=0.5, alpha=0.5) +
theme(text = element_text(family = "Heiti TC Light"))+
xlim(0, 75000)+
xlab("薪资")
# ggplot(money_data) +
# geom_histogram(alpha=0.5, position="identity") +
# # geom_text(aes(label=num), position=position_dodge(width=0.9), vjust=1.5) +
# theme(text = element_text(family = "Heiti TC Light"))comp_data <- zl_data%>%
select(智联招聘.职位名称,智联招聘.公司名称,智联招聘.学历,智联招聘.公司性质,智联招聘.融资情况,智联招聘.招聘人数)%>%
mutate(智联招聘.招聘人数 = as.numeric(智联招聘.招聘人数))
head(comp_data)找出发布招聘需求最多的top10公司
“比亚迪”,“理想汽车”,“小鹏汽车”,“北京汽车股份有限公司”,“云度新能源汽车有限公司”,“NIO 蔚来 (上海)”,“深圳腾悦新能源汽车销售服务有限公司”,“北京新能源汽车股份有限公司”,“威马汽车科技集团”,“深圳市迪滴新能源汽车科技有限公司”
而“比亚迪”,“理想汽车”,“小鹏汽车”这三家公司的招聘需求要远高于其他的公司
# 头部前10家企业招聘最多的岗位
# 整理出来每家企业每个岗位的招聘人数
aaaa <- data.frame(table(comp_data$智联招聘.公司名称))
order_comp <- aaaa[order(aaaa$Freq,decreasing = T),]
#head(order_comp,10)
order_comp <-order_comp %>%
top_n(10) Selecting by Freq
order_comp %>%
mutate(Var1 = fct_reorder(Var1, desc(Freq))) %>% # 默认:从下到上升序;从下到上降序:desc(Freq)
ggplot(aes(Var1,Freq))+
geom_col()+
geom_text(aes(label=Freq), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1))+
ylab("招聘人数")+
xlab("企业名称")
top10_comp <- c("比亚迪","理想汽车","小鹏汽车","北京汽车股份有限公司","云度新能源汽车有限公司",
"NIO 蔚来 (上海)","深圳腾悦新能源汽车销售服务有限公司","北京新能源汽车股份有限公司",
"威马汽车科技集团","深圳市迪滴新能源汽车科技有限公司")
peop_num <- comp_data%>%
select(智联招聘.公司名称,智联招聘.职位名称,智联招聘.招聘人数)%>%
filter(智联招聘.公司名称 %in% top10_comp)%>%
group_by(智联招聘.公司名称,智联招聘.职位名称)%>%
summarise(real = sum(智联招聘.招聘人数))`summarise()` has grouped output by '智联招聘.公司名称'. You can override using the `.groups` argument.
# peop_num
# str(peop_num[order(peop_num$real,decreasing = T),],10)
# head(peop_num[order(peop_num$real,decreasing = T),],30)查看各大公司各个岗位需求人数
下图是各个公司的各个岗位需求人数的分布箱形图: - 大部分岗位的招聘人数需求都在20一下子 - 但可以看出“理想汽车”,“小鹏汽车”,“比亚迪”右侧有一些离散的点,说明其在一些岗位上有特别大量的招聘需求
# pacman::p_load(dplyr,tibble,GGally,plotly,ggpubr)
top8_comp <- c("比亚迪","理想汽车","小鹏汽车","北京汽车股份有限公司","云度新能源汽车有限公司",
"NIO 蔚来 (上海)","深圳腾悦新能源汽车销售服务有限公司","北京新能源汽车股份有限公司")
peop8_num <- comp_data%>%
mutate(智联招聘.招聘人数 = as.numeric(智联招聘.招聘人数))%>%
select(智联招聘.公司名称,智联招聘.职位名称,智联招聘.招聘人数)%>%
filter(智联招聘.公司名称 %in% top8_comp)%>%
group_by(智联招聘.公司名称,智联招聘.职位名称)%>%
summarise(real = sum(智联招聘.招聘人数))`summarise()` has grouped output by '智联招聘.公司名称'. You can override using the `.groups` argument.
#top_n(8)
ggplot(peop8_num, aes(x=real,fill=智联招聘.公司名称))+
# geom_density(alpha=0.5)+
geom_boxplot()+
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1)) +
xlab("招聘数量")+
ggtitle("各公司招聘岗位需求数量分布图")整体的学历要求
'data.frame': 2720 obs. of 16 variables:
$ 智联招聘.职位名称: chr "产品经理" "新能源汽车销售" "电器工程师" "服务管理部-备件技术管理岗" ...
$ 智联招聘.公司名称: chr "比亚迪" "北京中广信达汽车销售服务有限公司" "松果新能源汽车有限公司" "北京新能源汽车股份有限公司" ...
$ 智联招聘.公司规模: chr "10000人以上" "20-99人" "1000-9999人" "1000-9999人" ...
$ 智联招聘.学历 : chr "本科" "大专" "大专" "本科" ...
$ 智联招聘.行业 : chr "汽车制造" "汽车制造" "汽车制造" "汽车制造" ...
$ 智联招聘.公司性质: chr "民营" "民营" "股份制企业" "国企" ...
$ 智联招聘.发布时间: chr "2021-10-15 18:26:05" "2021-10-06 11:16:37" "2021-09-28 17:03:33" "2020-11-13 16:42:33" ...
$ 智联招聘.薪资范围: chr "15001-20000" "15001-30000" "7001-12000" "10001-15000" ...
$ 智联招聘.工作城市: chr "上海" "北京" "北京" "北京" ...
$ 智联招聘.工作类型: chr "全职" "全职" "全职" "全职" ...
$ 智联招聘.工作年限: chr "3-5年" "1-3年" "3-5年" "5-10年" ...
$ 智联招聘.职位描述: chr "<p style=\"margin-top: 0px; margin-bottom: 0px; line-height: 22px; color: rgb(102, 102, 102); font-family: Taho"| __truncated__ "<p>1、有效执行新能源汽车销售策略:</p><p>2、开发潜在目标客户,按时完成汽车销量指标;</p><p>3、按规范流程接待客"| __truncated__ "岗位职责:<div> 1.按照总布置要求,对整车电器原理进行设计工作,满足相关功能,同时进行高压或低压线束设计工作; "| __truncated__ "<p><span style=\"font-family: 宋体\">工作职责:</span></p><p style=\"margin-top: 5px; margin-bottom: 5px;\"><fo"| __truncated__ ...
$ 智联招聘.城市 : chr "深圳" "北京" "德州" "北京" ...
$ 智联招聘.融资情况: chr "已上市" NA NA "已上市" ...
$ 智联招聘.招聘人数: chr "1" "5" "1" "1" ...
$ 智联招聘.公司地址: chr "深圳市坪山新区比亚迪路3009号" "天竺镇府前一街3号A 北京中广信达汽车销售服务有限公司" "德州(禹城)国家高新区" "北京是亦庄经济技术开发区东环中路5号" ...
# zl_people_data <- filter(zl_data, 智联招聘.学历 %in% c("中专/中技","初中及以下","博士","大专","学历不限","本科","硕士","高中"))
r <- with(zl_people_data, which(智联招聘.学历=="中技"))
zl_people_data <- zl_people_data[-r, ]
str(zl_people_data)'data.frame': 2719 obs. of 16 variables:
$ 智联招聘.职位名称: chr "产品经理" "新能源汽车销售" "电器工程师" "服务管理部-备件技术管理岗" ...
$ 智联招聘.公司名称: chr "比亚迪" "北京中广信达汽车销售服务有限公司" "松果新能源汽车有限公司" "北京新能源汽车股份有限公司" ...
$ 智联招聘.公司规模: chr "10000人以上" "20-99人" "1000-9999人" "1000-9999人" ...
$ 智联招聘.学历 : chr "本科" "大专" "大专" "本科" ...
$ 智联招聘.行业 : chr "汽车制造" "汽车制造" "汽车制造" "汽车制造" ...
$ 智联招聘.公司性质: chr "民营" "民营" "股份制企业" "国企" ...
$ 智联招聘.发布时间: chr "2021-10-15 18:26:05" "2021-10-06 11:16:37" "2021-09-28 17:03:33" "2020-11-13 16:42:33" ...
$ 智联招聘.薪资范围: chr "15001-20000" "15001-30000" "7001-12000" "10001-15000" ...
$ 智联招聘.工作城市: chr "上海" "北京" "北京" "北京" ...
$ 智联招聘.工作类型: chr "全职" "全职" "全职" "全职" ...
$ 智联招聘.工作年限: chr "3-5年" "1-3年" "3-5年" "5-10年" ...
$ 智联招聘.职位描述: chr "<p style=\"margin-top: 0px; margin-bottom: 0px; line-height: 22px; color: rgb(102, 102, 102); font-family: Taho"| __truncated__ "<p>1、有效执行新能源汽车销售策略:</p><p>2、开发潜在目标客户,按时完成汽车销量指标;</p><p>3、按规范流程接待客"| __truncated__ "岗位职责:<div> 1.按照总布置要求,对整车电器原理进行设计工作,满足相关功能,同时进行高压或低压线束设计工作; "| __truncated__ "<p><span style=\"font-family: 宋体\">工作职责:</span></p><p style=\"margin-top: 5px; margin-bottom: 5px;\"><fo"| __truncated__ ...
$ 智联招聘.城市 : chr "深圳" "北京" "德州" "北京" ...
$ 智联招聘.融资情况: chr "已上市" NA NA "已上市" ...
$ 智联招聘.招聘人数: chr "1" "5" "1" "1" ...
$ 智联招聘.公司地址: chr "深圳市坪山新区比亚迪路3009号" "天竺镇府前一街3号A 北京中广信达汽车销售服务有限公司" "德州(禹城)国家高新区" "北京是亦庄经济技术开发区东环中路5号" ...
本科 博士 初中及以下 大专 高中 硕士 学历不限 中专/中技
1606 3 23 542 53 116 243 133
allpeople_level <- allpeople_level %>%
rename(数量 = Freq, 学历 = Var1)
# 设置百分比
allpeople_level_label <- as.vector(allpeople_level$学历)## 转成向量,否则图例的标签可能与实际顺序不一致
allpeople_level_label <- paste(allpeople_level_label, "(", round((allpeople_level$数量/sum(allpeople_level$数量))*100, 2), "%)", sep = "") #用 round() 对结果保留三位小数
# Basic piechart
ggplot(allpeople_level, aes(x="", y=数量, fill=学历)) +
geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
geom_text(aes(label = 数量),
position = position_stack(vjust = 0.5)) +
scale_fill_discrete(breaks = allpeople_level$学历, labels = allpeople_level_label)+
theme(text = element_text(family = "Heiti TC Light"))各家公司的工资的中位数
Registered S3 method overwritten by 'data.table':
method from
print.data.table
Attaching package: ‘ggpubr’
The following object is masked from ‘package:plyr’:
mutate
The following objects are masked from ‘package:ggthemr’:
rotate_x_text, rotate_y_text
mp1 <- money_data%>%
select(智联招聘.公司名称, 最低薪资)%>%
filter(智联招聘.公司名称 %in% top8_comp)%>%
group_by(智联招聘.公司名称)%>%
summarise(median = median(最低薪资))%>%
ggplot(aes(reorder(智联招聘.公司名称, -median),median))+
geom_col()+
geom_text(aes(label=median), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1)) +
ylab("薪资")+
xlab("公司名称")+
ggtitle("最低薪资中位数")
mp2 <- money_data%>%
select(智联招聘.公司名称, 最低薪资)%>%
filter(智联招聘.公司名称 %in% top8_comp)%>%
group_by(智联招聘.公司名称)%>%
summarise(mean = mean(最低薪资))%>%
ggplot(aes(reorder(智联招聘.公司名称, -mean),mean))+
geom_col(fill = "#83d4d2")+
geom_text(aes(label=mean), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1)) +
ylab("薪资")+
xlab("公司名称")+
ggtitle("最低薪资平均数")
ggarrange(mp1,mp2,nrow=1)font family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font databasefont family 'Heiti TC Light' not found in PostScript font database
重点分析:“理想汽车”,“小鹏汽车”,“比亚迪”
可以看到三家公司的招聘人数分布,可以重点看一下50人以上的岗位需求有哪些
top3_comp <- comp_data%>%
mutate(智联招聘.招聘人数 = as.numeric(智联招聘.招聘人数))%>%
select(智联招聘.公司名称,智联招聘.职位名称,智联招聘.招聘人数)%>%
filter(智联招聘.公司名称 %in% c("比亚迪","理想汽车","小鹏汽车"))%>%
group_by(智联招聘.公司名称,智联招聘.职位名称)%>%
summarise(real = sum(智联招聘.招聘人数))`summarise()` has grouped output by '智联招聘.公司名称'. You can override using the `.groups` argument.
#top_n(8)
ggplot(top3_comp, aes(x=real,fill=智联招聘.公司名称))+
geom_density(alpha=0.5)+
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1))
ggplot(top3_comp, aes(x=real,fill=智联招聘.公司名称))+
geom_boxplot()+
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1)) levelpeop_num <- comp_data%>%
mutate(智联招聘.招聘人数 = as.numeric(智联招聘.招聘人数))%>%
select(智联招聘.公司名称,智联招聘.职位名称,智联招聘.招聘人数,智联招聘.学历)%>%
filter(智联招聘.公司名称 %in% top10_comp)%>%
group_by(智联招聘.公司名称,智联招聘.职位名称)%>%
summarise(real = sum(智联招聘.招聘人数))`summarise()` has grouped output by '智联招聘.公司名称'. You can override using the `.groups` argument.
grouped_df [1,824 × 3] (S3: grouped_df/tbl_df/tbl/data.frame)
$ 智联招聘.公司名称: Factor w/ 199 levels "安徽爱瑞特新能源专用汽车股份有限公司",..: 30 30 30 30 30 30 30 30 30 30 ...
$ 智联招聘.职位名称: Factor w/ 2292 levels ".NET开发专家 (MJ008821)",..: 2 20 25 46 47 115 157 160 162 173 ...
$ real : num [1:1824] 1 1 1 8 1 1 24 29 24 21 ...
- attr(*, "groups")= tibble [10 × 2] (S3: tbl_df/tbl/data.frame)
..$ 智联招聘.公司名称: Factor w/ 199 levels "安徽爱瑞特新能源专用汽车股份有限公司",..: 30 44 55 114 153 159 173 176 185 199
..$ .rows : list<int> [1:10]
.. ..$ : int [1:66] 1 2 3 4 5 6 7 8 9 10 ...
.. ..$ : int [1:29] 67 68 69 70 71 72 73 74 75 76 ...
.. ..$ : int [1:871] 96 97 98 99 100 101 102 103 104 105 ...
.. ..$ : int [1:336] 967 968 969 970 971 972 973 974 975 976 ...
.. ..$ : int [1:26] 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 ...
.. ..$ : int [1:41] 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 ...
.. ..$ : int [1:29] 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 ...
.. ..$ : int [1:325] 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 ...
.. ..$ : int [1:54] 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 ...
.. ..$ : int [1:47] 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 ...
.. ..@ ptype: int(0)
..- attr(*, ".drop")= logi TRUE
leveltest <- comp_data%>%
select(智联招聘.公司名称,智联招聘.职位名称,智联招聘.学历)
aa = merge(levelpeop_num,leveltest,by=c("智联招聘.公司名称","智联招聘.职位名称"))
str(aa)'data.frame': 2134 obs. of 4 variables:
$ 智联招聘.公司名称: Factor w/ 199 levels "安徽爱瑞特新能源专用汽车股份有限公司",..: 30 30 30 30 30 30 30 30 30 30 ...
$ 智联招聘.职位名称: Factor w/ 2292 levels ".NET开发专家 (MJ008821)",..: 2 20 25 46 47 115 157 160 162 173 ...
$ real : num 1 1 1 8 1 1 24 29 24 21 ...
$ 智联招聘.学历 : Factor w/ 9 levels "本科","博士",..: 4 1 9 1 4 1 9 1 1 1 ...
比亚迪
需求最多的还是工程师类的岗位 - “品质工程师”,“电气工程师”,“软件工程师”,“软件测试工程师”,“硬件工程师”,“测试工程师”,“高级硬件工程师” 技术类以外的主要岗位是: - “大客户经理”、“项目经理QM”
# 比亚迪
peop_num %>%
# mutate(智联招聘.公司名称 = fct_reorder(智联招聘.公司名称, real)) %>%
filter(智联招聘.公司名称=="比亚迪" & real > 50)%>%
ggplot(aes(reorder(智联招聘.职位名称, -real),real))+
geom_col()+
geom_text(aes(label=real), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1)) +
ylab("数量")+
xlab("岗位名称")看一下需要的技能
# 工程师类的
byd_01 <- zl_data %>%
filter(智联招聘.公司名称 == "比亚迪" & 智联招聘.职位名称 %in% c("品质工程师","电气工程师","软件工程师","软件测试工程师","硬件工程师","测试工程师","高级硬件工程师"))%>%
select(智联招聘.职位名称, 智联招聘.职位描述)%>%
mutate(智联招聘.职位描述=as.character(智联招聘.职位描述))
# 断词
jobtoken <- byd_01 %>% unnest_tokens(word, 智联招聘.职位描述, token=customized_tokenizer)
head(jobtoken)# 数据的清理
# 过滤特殊字元
data_select <- jobtoken %>%
filter(!grepl('[[:punct:]]',word)) %>% # 去标点符号
filter(!grepl("['^0-9']",word)) %>% # 去数字
filter(nchar(.$word)>1)
data_select
# 算每个 职位名称 的词频
# word_count:artDate,word,count
word_count <- data_select %>%
select(智联招聘.职位名称, word) %>%
group_by(智联招聘.职位名称,word) %>%
summarise(count=n()) %>%
filter(count>3) %>% # 過濾出現太少次的字
arrange(desc(count))
# # 画出文字云
# word_count %>%
# filter(!(word %in% c("具备","能力","优先","熟悉","要求","任职","经验",
# "工作","负责","具有","相关","了解","div","br"))) %>%
# select(word,count) %>%
# group_by(word) %>%
# summarise(count = sum(count)) %>%
# arrange(desc(count)) %>%
# filter(count>10) %>% # 过滤掉出现太少的字
# wordcloud2(color='random-dark')# 非工程师类的
byd_02 <- zl_data %>%
filter(智联招聘.公司名称 == "比亚迪" & 智联招聘.职位名称 %in% c("大客户经理","项目经理QM"))%>%
select(智联招聘.职位名称, 智联招聘.职位描述)%>%
mutate(智联招聘.职位描述=as.character(智联招聘.职位描述))
byd_02
# 断词
jobtoken <- byd_02 %>% unnest_tokens(word, 智联招聘.职位描述, token=customized_tokenizer)
# 数据的清理
# 过滤特殊字元
data_select <- jobtoken %>%
filter(!grepl('[[:punct:]]',word)) %>% # 去标点符号
filter(!grepl("['^0-9']",word)) %>% # 去数字
filter(nchar(.$word)>1)
data_select
# 算每个 智联招聘.职位名称 的词频
# word_count:artDate,word,count
word_count <- data_select %>%
select(智联招聘.职位名称, word) %>%
group_by(智联招聘.职位名称,word) %>%
summarise(count=n()) %>%
filter(count>3) %>% # 過濾出現太少次的字
arrange(desc(count))
# # 画出文字云
# word_count %>%
# filter(!(word %in% c("具备","能力","优先","熟悉","要求","任职","经验",
# "工作","负责","具有","相关","了解","div","br"))) %>%
# select(word,count) %>%
# group_by(word) %>%
# summarise(count = sum(count)) %>%
# arrange(desc(count)) %>%
# filter(count>5) %>% # 过滤掉出现太少的字
# wordcloud2(color='random-dark')理想汽车
# 理想汽车
peop_num %>%
# mutate(智联招聘.公司名称 = fct_reorder(智联招聘.公司名称, real)) %>%
filter(智联招聘.公司名称=="理想汽车" & real > 30)%>%
ggplot(aes(reorder(智联招聘.职位名称, -real),real))+
geom_col()+
geom_text(aes(label=real), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1))+
ylab("数量")+
xlab("岗位名称")# 理想汽车产品类的岗位需求
lx_01 <- zl_data %>%
filter(智联招聘.公司名称 == "理想汽车" & 智联招聘.职位名称 %in% c("产品专家(销售)","产品专家-北京"))%>%
select(智联招聘.职位名称, 智联招聘.职位描述)%>%
mutate(智联招聘.职位描述=as.character(智联招聘.职位描述))
lx_01
# 断词
jobtoken <- lx_01 %>% unnest_tokens(word, 智联招聘.职位描述, token=customized_tokenizer)
# 数据的清理
# 过滤特殊字元
data_select <- jobtoken %>%
filter(!grepl('[[:punct:]]',word)) %>% # 去标点符号
filter(!grepl("['^0-9']",word)) %>% # 去数字
filter(nchar(.$word)>1)
data_select
# 算每个 职位名称 的词频
# word_count:artDate,word,count
word_count <- data_select %>%
select(智联招聘.职位名称, word) %>%
group_by(智联招聘.职位名称,word) %>%
summarise(count=n()) %>%
filter(count>3) %>% # 過濾出現太少次的字
arrange(desc(count))
# # 画出文字云
# word_count %>%
# filter(!(word %in% c("具备","能力","优先","熟悉","要求","任职","经验",
# "工作","负责","具有","相关","了解","div","br"))) %>%
# select(word,count) %>%
# group_by(word) %>%
# summarise(count = sum(count)) %>%
# arrange(desc(count)) %>%
# filter(count>5) %>% # 过滤掉出现太少的字
# wordcloud2(color='random-dark')小鹏汽车
# 小鹏汽车
peop_num %>%
# mutate(智联招聘.公司名称 = fct_reorder(智联招聘.公司名称, real)) %>%
filter(智联招聘.公司名称=="小鹏汽车" & real > 30)%>%
ggplot(aes(reorder(智联招聘.职位名称, -real),real))+
geom_col()+
geom_text(aes(label=real), position=position_dodge(width=0.9), vjust=-0.25) +
theme(text = element_text(size=10,family = "Heiti TC Light"),
axis.text.x = element_text(angle=45, hjust=1))+
ylab("数量")+
xlab("岗位名称")# 小鹏汽车自动驾驶岗
xp_02 <- zl_data %>%
filter(智联招聘.公司名称 == "小鹏汽车" & 智联招聘.职位名称 %in% c("自动驾驶-路径规划和控制算法开发高级工程师/专家",
"自动驾驶-路径规划算法开发专家/高级专家",
"自动驾驶-感知算法专家/高级专家(深度学习方向)"))%>%
select(智联招聘.职位名称, 智联招聘.职位描述)%>%
mutate(智联招聘.职位描述=as.character(智联招聘.职位描述))
xp_02
# 断词
jobtoken <- xp_01 %>% unnest_tokens(word, 智联招聘.职位描述, token=customized_tokenizer)
# 数据的清理
# 过滤特殊字元
data_select <- jobtoken %>%
filter(!grepl('[[:punct:]]',word)) %>% # 去标点符号
filter(!grepl("['^0-9']",word)) %>% # 去数字
filter(nchar(.$word)>1)
data_select
# 算每个 职位名称 的词频
# word_count:artDate,word,count
word_count <- data_select %>%
select(智联招聘.职位名称, word) %>%
group_by(智联招聘.职位名称,word) %>%
summarise(count=n()) %>%
filter(count>3) %>% # 過濾出現太少次的字
arrange(desc(count))
# 画出文字云
word_count %>%
filter(!(word %in% c("具备","能力","优先","熟悉","要求","任职","经验",
"工作","负责","具有","相关","了解","div","br"))) %>%
# filter(蔚来官网校招.职能支持方向 == "数字技术方向") %>%
select(word,count) %>%
group_by(word) %>%
summarise(count = sum(count)) %>%
arrange(desc(count)) %>%
filter(count>5) %>% # 过滤掉出现太少的字
wordcloud2(color='random-dark')