我有data.frame有两列,如下所示
dat
ID Details
id_1 box1_homodomain gn=box1 os=homo sapiens p=4 se=1
id_2 sox2_plurinet gn=plu os=mus musculus p=5 se=3
我想在“详细信息”列中为所有ID拆分“os = xxx”和gn =“yyy”,并按如下所示进行打印:
Id Description gn os
Îd_1 box1_homodomain box1 homo sapiens
Id_2 sox2_plurinet plu mouse musculus
我尝试在R中使用gsub方法,但无法将os = homo sapiens和gn = box1拆分为各自的列。我使用的以下R代码
dat$gn=gsub('^[gn=][A-z][A-z]`,dat$Details)
dat$os=gsub('^[os=][A-z][A-z]`,dat$Details)
谁能告诉我什么地方出了问题以及如何纠正。请帮助我。
提前致谢
最佳答案
这是tidyr的一个选项:
library(tidyr)
# specify the new column names:
vars <- c("Description", "gn", "os")
# then separate the "Details" column according to regex and drop extra columns:
separate(dat, Details, into = vars, sep = "[A-Za-z]+=", extra = "drop")
# ID Description gn os
#1 id_1 box1_homodomain box1 homo sapiens
#2 id_2 sox2_plurinet plu mus musculus