加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用正则表达式拆分列中的值

发布时间:2020-12-14 06:03:25 所属栏目:百科 来源:网络整理
导读:我有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 Descripti
我有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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读