stringr包是Hadley Wickham大神贡献的R包之一,主要用于字符串的处理。对于经常需要对数据进行预处理的分析人员来说,简直是一把“利器”,可谓是上能屠龙,下能剔牙。其用法相比于R自带的函数,更加简单明了。stringr包在我工作中,是属于频繁使用的R包之一。简单的用法也是深入我心,强烈推荐使用该包进行字符串的预处理。
接下来,根据我在工作中使用到的stringr包的场景,介绍一下这些函数的用法。
字符拼接
场景:在读入csv或者xlsx格式文件时,根路径一般不一致,然后我一般使用全名路径。这家在读入文件的时候,不会因为路径的问题出错。
#根路径wd
去空格
场景:在Excel中,使用查找筛选时,字符串后面的空格往往对结果无影响,但是在R中,却会出问题,所以在匹配之前,先将空格删除。
space
分割与合并
场景:数据框中某一列按某一个分隔符分隔,需要将该列分列;或者数据框中某几列需要按分隔符合并成一列。具体可以查看
a a.split a.split[[1]][1] "a" "b" "c" "d"#合并,其实就是拼接字符串#使用unlist将a.split变成向量#当输入为单一向量时,使用collapse这个参数a.unite a.unite[1] "a_b_c_d"
替换
场景:批量导入csv文件时,由于部分文件是以逗号作为小数点的,虽然可以使用read.csv2函数正确读入,但是需要先判断出哪一部分以逗号为小数点,我觉得不如一起读入之后再做处理方便。
#替换comma
截取
场景:这个就比较特定的场景了,在公司有一个表,其中一列是规格,一列是规格与颜色合并,但是合并后也没有特定的分隔符,需要把颜色截取出来。
#截取guige
提取
场景:与截取的功能类似,但是可以使用正则表达式匹配,更为强大。在我的工作中,常用来提取csv文件名。
#提取filepath
字母大小写转换
场景:在Excel中,查找匹配不区分大小写,但是在R中区分大小写,常出现在Excel中能查到到但是R中匹配不到的情况,故先预处理统一大小写再做匹配。
#大小写转换r.letter
检测
场景:常跟ifelse函数配合使用,对某一列字符串进行判断是否匹配。多用于新建列
#检测df df$b df a b1 1 数字2 2 数字3 3 数字4 a 非数字5 b 非数字6 c 非数字
以上是本人较常用的stringr包函数,可以发现该包的语法简洁,用法简单明了,同时提供的正则表达式匹配,更为强大。熟练掌握后,对文本的预处理简直无往不利,如丝般顺滑。该包不仅仅只有以上几个函数,还有其他函数,只是工作中较少用到,所以未列举出来。可见stringr包确实强大,提供了一整套字符串的处理方案。强烈推荐stringr包,相信它可以给你提供你预想不到的便利与高效。
领取专属 10元无门槛券
私享最新 技术干货