《深入浅出数据分析》第十三章

本文介绍了如何使用Excel的SUBSTITUTE函数处理掉FirstName列的多余字符,并通过正则表达式处理LastName列的括号内容。接着讲述了如何使用R去重,以及正则表达式的进一步介绍。最后总结了正则表达式在信息技术中的广泛应用。
摘要由CSDN通过智能技术生成


整理数据

这章进行了简单的数据清洗。


一、Excel

一开始拿到散乱的数据,先用Excel进行分列。

散乱的数据:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里先处理 FirstName ,可以看到这一列的问题是,每个名字前面都多一个^字符,用Excel工具去掉即可。

先列出来几个书中提到的函数:

函数作用
FIND返回指定字符串的位置
LEFT取单元格左边的字符
RIGHT取单元格右边的字符
TRIM删除单元格中的空格
LEN求单元格中的长度
CONCATENATE将两个值合并
VALUE求以文本格式存储的数据的数值
SUBSTITUTE以指定的新文本替代单元格中不需要的文本

这里用到的是SUBSTITUTE函数。

SUBSTITUTE(text, old_text, new_Text, [instance_num])

我们先新建一个列,命名为NewFirstName。之后输入公式。如下图:
在这里插入图片描述

这样FirstName就处理完了,但是LastName无法使用简单的Excel函数去掉中间的多余字符,所以我们使用R。
这里注意,不是Excel无法处理这种问题,是因为如果想要使用Excel函数去处理,就要嵌套多个不同函数,这样不便于使用及更改,所以还是使用R更方便快捷。

二、正则表达式

正则表达式是一种编程工具,可以用这个工具制定复杂的模式以便匹配和替换文本字符串。
本次数据中的LastName列就可以使用这个方式处理。

先用代码演示一下书中示例:

hfhh <- read.table("D:/Excel/hfda/hfda_ch13_raw_data.csv", sep=",",header=1)	// 先加载数据
NewLastName <- sub("\\(.*\\)", "", hfhh$LastName)	//使用正则表达式处理LastName列
这里解释一下这个正则表达式的含义:
\\(.*\\)  总体来看就是要匹配()中的内容
分解开来看:
\\(   代表左括号,\\表示括号本身并不是R的表达式
\\)   代表右括号,\\表示括号本身并不是R的表达式
.*    代表括号内的全部内容

这样LastName这一列就处理好了,但在数据中我们发现很多重复项,这些重复项的名字和电话是相同的,而时间等无关项不同。这就需要我们先将其无关项删除,然后再进行去重操作。

先去除无关项:

hfhhNameOnly$Time <- NULL
hfhhNameOnly$CallID <- NULL

三、去重

可以使用R中的unique()函数去掉名字中的重复行。
代码示例如下:

hfhhNameOnly <- unique(hfhhNameOnly)

去重完成后,将整理好的数据存为csv文件。
代码示例如下:

write.csv(hfhhNameOnly, file="hfhhNameOnly.csv")

四、补充介绍正则表达式

正则表达式在很多语言上都经常用到,在这简单整理一下:
https://www.runoob.com/regexp/regexp-intro.html
这个网站里面介绍的超级全面,存在这里留着看,感谢大佬,感谢互联网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值