简单材料:
陈*先生:1965年出生,中国国籍,无永久境外居留权,本科学历。1985年7月至1995年2月,任安徽省安庆市宿松财政局公务员;1995年3月至1997年2月,担任深圳华通会计师事务所项目经理;1997年3月至1998年10月,担任深圳冠利达必是食品公司财务经理;1998年11月至2004年5月,担任丽斯达日化(深圳)公司财务总监;2004年6月至2006年8月,担任富安娜家居股份有限公司财务总监;2006年11月至2007年10月,担任万达商业管理有限公司副总经理;2007年11月至2012年10月,担任深圳宇顺电子股份有限公司财务总监兼董事会秘书;2013年5月至2014年12月,担任深圳市骏达光电股份有限公司财务总监兼董事会秘书;2015年3月至2016年9月,任易天有限财务总监兼董事会秘书;2016年3月至今,任兴图科技监事;2016年9月至今,担任公司董事、副总经理、财务总监兼董事会秘书;2017年10月至今,担任微组半导体董事;2017年12月至今,担任中山易天董事。
将上述简历文字转为如下所示的履历表
我们观察下材料,可以发现其中标点符号使用得比较规范,简历的结构比较规整,用R处理字符串的功能即可实现上述功能。
library(stringr)
library(tidyverse)
read_in <- readLines("resume.txt",encoding = "GB2312")
tmp0 <- read_in %>% strsplit("。") %>%
unlist %>% strsplit(";") %>% unlist #依次用中文标点符号:句号,分号进行分割
tmp0#看看拆分的结果
[1] "陈*先生:1965年出生,中国国籍,无永久境外居留权,本科学历"
[2] "1985年7月至1995年2月,任安徽省安庆市宿松财政局公务员"
[3] "1995年3月至1997年2月,担任深圳华通会计师事务所项目经理"
[4] "1997年3月至1998年10月,担任深圳冠利达必是食品公司财务经理"
[5] "1998年11月至2004年5月,担任丽斯达日化(深圳)公司财务总监"
[6] "2004年6月至2006年8月,担任富安娜家居股份有限公司财务总监"
[7] "2006年11月至2007年10月,担任万达商业管理有限公司副总经理"
[8] "2007年11月至2012年10月,担任深圳宇顺电子股份有限公司财务总监兼董事会秘书"
[9] "2013年5月至2014年12月,担任深圳市骏达光电股份有限公司财务总监兼董事会秘书"
[10] "2015年3月至2016年9月,任易天有限财务总监兼董事会秘书"
[11] "2016年3月至今,任兴图科技监事"
[12] "2016年9月至今,担任公司董事、副总经理、财务总监兼董事会秘书"
[13] "2017年10月至今,担任微组半导体董事"
[14] "2017年12月至今,担任中山易天董事"
tmp1<-tmp0[-1]
res<-str_split_fixed(tmp1,",",2) %>% as.data.frame
res
V1 V2
1 1985年7月至1995年2月 任安徽省安庆市宿松财政局公务员
2 1995年3月至1997年2月 担任深圳华通会计师事务所项目经理
3 1997年3月至1998年10月 担任深圳冠利达必是食品公司财务经理
4 1998年11月至2004年5月 担任丽斯达日化(深圳)公司财务总监
5 2004年6月至2006年8月 担任富安娜家居股份有限公司财务总监
6 2006年11月至2007年10月 担任万达商业管理有限公司副总经理
7 2007年11月至2012年10月 担任深圳宇顺电子股份有限公司财务总监兼董事会秘书
8 2013年5月至2014年12月 担任深圳市骏达光电股份有限公司财务总监兼董事会秘书
9 2015年3月至2016年9月 任易天有限财务总监兼董事会秘书
10 2016年3月至今 任兴图科技监事
11 2016年9月至今 担任公司董事、副总经理、财务总监兼董事会秘书
12 2017年10月至今 担任微组半导体董事
13 2017年12月至今 担任中山易天董事
我们使用了强大的%>%运算符,将strsplit函数与unlist函数搭配使用。
再使用str_split_fixed函数将","逗号作为分隔符,将结果拆分为两列的数据,并转为data.frame。
上述为材料的标点使用比较规范的例子,如果简历的标点使用不规范,那么情况又会如何?
复杂材料:
郭**,女,中国国籍,无境外永久居留权,1958年8月出生,现任侨银环保董事长。1977年11月至2008年8月,任职于湖南省邵阳市皮件厂;2006年2月至2009年10月担任霖泽园林、侨银有限监事,2009年10月至2015年12月担任侨银有限执行董事、总经理,2015年12月至2016年6月担任侨银有限执行董事,2016年6月至今担任侨银环保董事长。
可以发现标点符号的使用并不很规范,履职之间有多种符号分隔,比如分号、逗号,且任期与履职之间有些并没有逗号分隔。这种情况如何进行转换呢?这个时候就要正则表达式这个神器隆重登场,TB搜索店铺:R语者,留言“履职表”,揭晓答案并获取本次全部的学习材料和代码。