R数据处理(4)–正则表达式与字符串处理

简介:汇总了医学数据处理中常用的有关字符串筛,修正,拆分,提取所用代码

R包:tidyverse

正则表达式语法

1.1 特殊字符及其反意

. 匹配任意字符(注意只在同一行中有效如需换行可以用[\s\S]
\d \D 匹配数字 匹配非数字
\s \S 匹配空白符
\w \W 匹配字母,数字,汉字,下划线
[a-zA-Z0-9] 匹配数字或字母
[a-zA-Z] 匹配字母
[\p{han}] 匹配汉字

1.2 元字符

| #或
^ $ #字符串开头结尾
()
[]
{} * + ?
[abc]:匹配方括号内的任意一个字符(a、b 或 c)。
[^abc]:匹配不在方括号内的任意字符。
[a-z]:匹配从 a 到 z 的任何小写字母。
[A-Z]:匹配从 A 到 Z 的任何大写字母。
[0-9]:匹配从 0 到 9 的任何数字。
{n}:匹配前面的字符恰好 n 次。
{n,}:匹配前面的字符至少 n 次。
{n,m}:匹配前面的字符至少 n 次,但不超过 m 次。
*:匹配前面的字符零次或多次。
+:匹配前面的字符一次或多次。
?:匹配前面的字符零次或一次(表示可选)。

.*? 懒惰匹配,匹配到下一个指定字符后就停止

字符串处理常用函数

#字符串拆分
x="x1,a2,b3"
str_split(x,",")

#字符串合并
x=c("x1","a2","b3") 
str_c(x,1:3,sep="_") 

#提取部分内容
x=c("x1","a2","b3") 
str_sub(x,1,1)

#大小写转化
x=c("x1","A2","b3","a die") 
str_to_upper(x) #所有字母大写
str_to_lower(x) #所有字母小写
str_to_title(x) #单词开头字母大写

#检测是否匹配返回逻辑值(可用正则表达式)
x=c("x1","a2","b3","a") 
str_detect(x,"a")


#提取匹配的元素(可用正则表达式)
x=c("x1","a2","b3","a") 
str_subset(x,"a")

#只提取匹配的内容(可用正则表达式)
x=c("x1","a2","b3","a") 
str_extract(x,"a")

#替换匹配的字符串(可用正则表达式)
x=c("x1","a2","b3","a") 
str_replace(x,"a","C")

利用正则表达式和字符处理函数实现精确的字符处理

#str_view()用于调试正则表达式,确认无误后可用上面的替换提取等函数

#提取数字
x = c("1.45m", "56.7kg", "78.568平方米")
str_extract(x,"\\d+.\\d+") 
parse_number(x) #用此函数提取待小数点的小数更加方便

#提取百分数或数字
x=c("abc12%n","ckd14%ed","s10m")
str_extract(x,"\\d+%?") 

#提取单位(字母或汉字)
x = c("1.45m", "56.7kg", "78.568平方米")
str_extract(x,"[\\p{han}]+|[a-zA-Z]+") 

#零宽断言
x=c("123我做了一个modela_1哈","123我做了一个modelb_1哈")
str_extract(x,"(?<=123).*(?=\\p{han})")

#替换进阶
#字母或数字与汉字之间用空格隔开
x=c("华硕b450","处理器7500f","微星 迫击炮")
str_replace(x,"([a-zA-Z0-9])"," \\1")

#调换顺序
x=c("小明的math:99","小白的55:english")
str_replace(x,"(\\d+):([a-zA-Z]+)","\\2:\\1")

应用举例

1.变量重新赋值/包含检测

zz <- zz %>% mutate(fz2=case_when(str_detect(value,"Scr")~1,
                                  str_detect(value,"eGFR")~2,
                                  str_detect(value,"年龄")~3,
                                  str_detect(value,"时间")~4,))

2.变量拆分

3.字符提取

4.字符修改

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇