使用R从长字符串中将部分单词提取到字段中
我有一个带3个OB的长字符串变量。我试图创建一个字段prob来从长字符串中提取特定字符串。代码和消息如下 数据aa:“成为承运人的概率为0.0002422359”“BRCA1承运人为0.0001061067” “BRCA2载体0.00013612” 在这里输入代码 aa$prob这是我的,已更新以反映使用R从长字符串中将部分单词提取到字段中,r,grepl,R,Grepl,我有一个带3个OB的长字符串变量。我试图创建一个字段prob来从长字符串中提取特定字符串。代码和消息如下 数据aa:“成为承运人的概率为0.0002422359”“BRCA1承运人为0.0001061067” “BRCA2载体0.00013612” 在这里输入代码 aa$prob这是我的,已更新以反映data.frame 库(dplyr) aa% 变异(prob=as.numeric(if_else(grepl)((概率| BRCA[12]载体)”,aa), gsub(“^.*?\\b([0-9
data.frame
库(dplyr)
aa%
变异(prob=as.numeric(if_else(grepl)((概率| BRCA[12]载体)”,aa),
gsub(“^.*?\\b([0-9]+\.?[0-9]*)\\s*$”,“\\1”,aa),不带字符)
#aa问题
# 1 ... NA
# 2 ... NA
#3作为承运人的概率为0.0002422359 0.0002422359
#4 BRCA1载波0.0001061067 0.0001061067
#5 BRCA2载体0.00013612 0.0001361200
# 6 ... NA
正则表达式遍历:
和^
分别是字符串的开头和结尾$
是单词边界;这些都不会“消耗”任何字符,它们只是标记开头和结尾\\b
表示一个字符
表示“零或一”,也称为可选<代码>*表示“零或更多”<代码>+表示“一个或多个”;均指上一个字符/类/组?
是空白,包括空格和制表符\\s
是一个类,表示0到9之间的任何字符;类似地,[0-9]
都是小写字母,[a-z]
都是字母,[a-zA-z]
都是十六进制数字,等等[0-9A-F]
是已保存的组;在一个群体中使用(…)
作为“或”并不罕见;此组稍后在|
的gsub
部分中用作编号组,因此replacement=
从模式中调用第一组\\1
“^.*?\\b([0-9]+\\.?[0-9]*)\\s*$”
1 ^^^^^^^^^^^^^^^^^^
2 ^^^
3 ^^^
4 ^^^^
“12.345”
可能被解析为“2.345”
,如果没有它Regex不是R所独有的,它是R(和大多数其他编程语言)以某种方式支持的一种解析语言。对您的一个问题做了回答(相对相同)不起作用?它完美地从字段中提取数字,您只需将
添加为.numeric
。嗨,r2evans,谢谢您的指导。它起作用。我得到了3个值。但在运行代码后不知道数据集中的字段名:Ssub控制台窗口显示:>bb[1]0.0002422359 0.0001061067 0.0001361200对于give me,我从SAS跳到R一周。我有很多概念问题是bb是数据帧名称还是变量名称?这是一个很大的帮助。我是R的初学者。你能解释一下“^.*?\\b([0-9]+\.?[0-9]*)\\s*$,“\\1”的意思吗,在gsub部分?谢谢你,因为你对堆叠网站还不熟悉:慢慢来,不要着急,但是当你觉得一个答案可以解决你的问题时,请。这样做不仅可以给回答者提供一些要点,还可以为有类似问题的读者提供一些结尾。虽然你只能接受一个答案,但你有如你认为有助于提高投票效率(你在回答这个问题之前的答案,请考虑回到他们并接受一些)。再次,不要匆忙。谢谢。对不起,我只看到“积极的”,“最老的”和“投票”。答案旁边的按钮可用。我没有看到“接受”按钮。我也检查了链接,但仍然找不到。对此表示抱歉。我真的想接受它。在该按钮的左侧,您应该看到一个向上/向下的投票者,一个数字(当前为0),下面应该有一个灰色复选标记(因为您是原始海报)。点击该箭头应该会接受。就这么做了。它会说:“感谢您的反馈!记录声誉低于15的人所投的票,但不要更改公开显示的帖子分数。”15'后会检查它,谢谢您的帮助!!!