我有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