如何在r中提取字符串
我想提取一些序列数据中每个分类群的科级和ID。下游分析需要picante和phyloseq软件包,但此问题不需要。在下面的示例中,我想:如何在r中提取字符串,r,R,我想提取一些序列数据中每个分类群的科级和ID。下游分析需要picante和phyloseq软件包,但此问题不需要。在下面的示例中,我想: 将V1从“00000000 1 |大小:678798”和“00000000 9 |大小:1497”减少到“1”和“9” 将“内生孢子虫科”和“聚球虫科”提取到一个新的柱中 a这是你想要的吗 strplit strsplit(as.character(a$V1), "\\|") 格雷普 a$Bacteria <- NA a$Bacteria[gre
a这是你想要的吗
strplit
strsplit(as.character(a$V1), "\\|")
格雷普
a$Bacteria <- NA
a$Bacteria[grep("Endozoicimonaceae", a$V2)] <- "Endozoicimonaceae"
a$Bacteria[grep("Synechococcaceae", a$V2)] <- "Synechococcaceae"
a$Bacteria我们可以使用parse_number
从'V1'中提取第一个数值,str_extract
从'V2'中提取特定的子字符串/单词,或者如果它是从模式中提取的,即指定regex lookaround来搜索在f_u
之后成功的单词(\\w+
)
library(stringr)
library(dplyr)
a %>%
mutate(V1 = readr::parse_number(as.character(V1)),
new = str_extract(V2, "(?<=f__)\\w+"))
# V1
#1 1
#2 9
#V2
#1 k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; \n o__Oceanospirillales; f__Endozoicimonaceae; g__; s__
#2 k__Bacteria; p__Cyanobacteria; c__Synechococcophycideae; \n o__Synechococcales; f__Synechococcaceae; g__Synechococcus; s__
# V3 V4 new
#1 1 3 Endozoicimonaceae
#2 1 3 Synechococcaceae
库(stringr)
图书馆(dplyr)
a%>%
mutate(V1=readr::parse_number(as.character(V1)),
new=str_extract(V2),(?已编辑-问题是当我尝试对主数据框进行子集时。我认为这应该可以工作。从V1中提取工作-谢谢!V2的问题是,我的实际数据框是200行,因此手动提取将很困难。我想提取“f”之后的族级名称__“在V2Error中,表示替换和数据具有不同的行数?修复了问题-这非常有效。感谢您的帮助!我尝试了其他一些不起作用的方法,因此我在编辑的数据帧上运行了您的代码,而不是在我给出的示例中运行的代码。但我在正确的数据帧上运行了您的代码,这正是我所需要的。”。
library(stringr)
library(dplyr)
a %>%
mutate(V1 = readr::parse_number(as.character(V1)),
new = str_extract(V2, "(?<=f__)\\w+"))
# V1
#1 1
#2 9
#V2
#1 k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; \n o__Oceanospirillales; f__Endozoicimonaceae; g__; s__
#2 k__Bacteria; p__Cyanobacteria; c__Synechococcophycideae; \n o__Synechococcales; f__Synechococcaceae; g__Synechococcus; s__
# V3 V4 new
#1 1 3 Endozoicimonaceae
#2 1 3 Synechococcaceae