从 R 中的化学式中提取数字
Extract numbers from Chemical Formula in R
我的数据集 (MSdata) 看起来像这样
m.z Intensity Relative Delta..ppm. RDB.equiv. Composition
301.14093 NA 100.00 -0.34 5.5 C16 H22 O4 Na
149.02331 4083458.5 23.60 -0.08 6.5 C8 H5 O3
279.15908 NA 18.64 -0.03 5.5 C16 H23 O4
我希望它看起来像
m.z Intensity Relative Delta..ppm. RDB.equiv. C H O Na
301.14093 NA 100.00 -0.34 5.5 16 22 4 1
149.02331 4083458.5 23.60 -0.08 6.5 8 5 3 0
279.15908 NA 18.64 -0.03 5.5 16 23 4 0
我已经使用了这个
library(stringr)
numextract <- function(string){
unlist(regmatches(string, gregexpr("[[:digit:]]+\.*[[:digit:]]*"
,string)))
}
MScomp <- numextract("C14 H18 O4 Na")
然而,这给了我
'14' '18' '4'
我需要 'Na' 字符串给我一个值 1 或 0(或 NA)。我是编码新手,其中很多都超出了我的范围 - 我一直在使用这个 website to help me。此外,我不知道如何将这些新列(如果可行的话)合并到我当前的矩阵中。我之前链接的网站使用了 newcol() 函数?感谢您提供的任何帮助!
我已经根据需要编辑了代码:
library(tidyverse)
library(stringr)
dat%>%mutate(Composition=gsub("\b([A-Za-z]+)\b","\11",Composition),
name=str_extract_all(Composition,"[A-Za-z]+"),
value=str_extract_all(Composition,"\d+"))%>%
unnest()%>%spread(name,value,fill=0)
m.z Intensity Relative Delta..ppm. RDB.equiv. Composition C H Na O
1 149.0233 4083459 23.60 -0.08 6.5 C8 H5 O3 8 5 0 3
2 279.1591 NA 18.64 -0.03 5.5 C16 H23 O4 16 23 0 4
3 301.1409 NA 100.00 -0.34 5.5 C16 H22 O4 Na1 16 22 1 4
我的数据集 (MSdata) 看起来像这样
m.z Intensity Relative Delta..ppm. RDB.equiv. Composition
301.14093 NA 100.00 -0.34 5.5 C16 H22 O4 Na
149.02331 4083458.5 23.60 -0.08 6.5 C8 H5 O3
279.15908 NA 18.64 -0.03 5.5 C16 H23 O4
我希望它看起来像
m.z Intensity Relative Delta..ppm. RDB.equiv. C H O Na
301.14093 NA 100.00 -0.34 5.5 16 22 4 1
149.02331 4083458.5 23.60 -0.08 6.5 8 5 3 0
279.15908 NA 18.64 -0.03 5.5 16 23 4 0
我已经使用了这个
library(stringr)
numextract <- function(string){
unlist(regmatches(string, gregexpr("[[:digit:]]+\.*[[:digit:]]*"
,string)))
}
MScomp <- numextract("C14 H18 O4 Na")
然而,这给了我
'14' '18' '4'
我需要 'Na' 字符串给我一个值 1 或 0(或 NA)。我是编码新手,其中很多都超出了我的范围 - 我一直在使用这个 website to help me。此外,我不知道如何将这些新列(如果可行的话)合并到我当前的矩阵中。我之前链接的网站使用了 newcol() 函数?感谢您提供的任何帮助!
我已经根据需要编辑了代码:
library(tidyverse)
library(stringr)
dat%>%mutate(Composition=gsub("\b([A-Za-z]+)\b","\11",Composition),
name=str_extract_all(Composition,"[A-Za-z]+"),
value=str_extract_all(Composition,"\d+"))%>%
unnest()%>%spread(name,value,fill=0)
m.z Intensity Relative Delta..ppm. RDB.equiv. Composition C H Na O
1 149.0233 4083459 23.60 -0.08 6.5 C8 H5 O3 8 5 0 3
2 279.1591 NA 18.64 -0.03 5.5 C16 H23 O4 16 23 0 4
3 301.1409 NA 100.00 -0.34 5.5 C16 H22 O4 Na1 16 22 1 4