% # split each-6ren">
gpt4 book ai didi

regex - 使用 tidyr 从列中提取值

转载 作者:行者123 更新时间:2023-12-01 08:28:08 25 4
gpt4 key购买 nike

我将 data.frame annot 定义为:

annot <- structure(list(Name = c("dd_1", "dd_2", "dd_3","dd_4", "dd_5", "dd_6","dd_7"), GOs = 
c("C:extracellular space; C:cell body; P:cell migration process; P:NF/ß pathway",
"C:Signal transduction; C:nucleus; F:positive regulation; P:single organism; P:positive(+) regulation",
"C:cardiomyceltes; C:intracellular pace; F:putative; F:magnesium ion binding; F:calcium ion binding; P:visual perception; P:blood coagulation",
"F:poly(A) RNA binding; P:DNA-templated transcription, initiation",
"C:ULK1-ATG13-FIP200 complex; F:histone-arginine N-methyltransferase activity; P:single-organism cellular process",
"F:3'-5' DNA helicase activity; P:acetate-CoA ligase activity",
"F:UDP-N-acetylmuramoylalanyl-D-glutamyl-2,6-diaminopimelate-D-alanyl-D-alanine ligase activity; P:oxidoreductase activity, acting on the aldehyde or oxo group of donors, NAD or NADP as acceptor"
)), .Names = c("Name", "GOs"), class = "data.frame", row.names = c(NA,
-7L))

data.frame 如下所示:

Name     GOs
dd_1 C:extracellular space; C:cell body; P:cell migration process; P:NF/ß pathway
dd_2 C:Signal transduction; C:nucleus; F:positive regulation; P:single organism; P:positive(+) regulation
dd_3 C:cardiomyceltes; C:intracellular pace; F:putative; F:magnesium ion binding; F:calcium ion binding; P:visual perception; P:blood coagulation
dd_4 F:poly(A) RNA binding; P:DNA-templated transcription, initiation
dd_5 C:ULK1-ATG13-FIP200 complex; F:histone-arginine N-methyltransferase activity; P:single-organism cellular process
dd_6 F:3'-5' DNA helicase activity; P:acetate-CoA ligase activity
dd_7 F:UDP-N-acetylmuramoylalanyl-D-glutamyl-2,6-diaminopimelate-D-alanyl-D-alanine ligase activity; P:oxidoreductase activity, acting on the aldehyde or oxo group of donors, NAD or NADP as acceptor

每个条目都包含 C、F、P 中的单词、特殊字符、字母数字字符。我想拆分与 C:xxx;F:yyy:P:zzz 对应的所有值将其对应的值分成单独的列,如下所示:

Name   Component                             Function                  P
dd_1 C:extracellular space;C:cell body F:transport carrier P:cell migration process;P:NF/ß pathway
dd_2 C:Signal transduction;C:nucleus F:positive regulation P:single organism;P:positive regulation
dd_3 C:cardiomyceltes;C:intracellular pace F:magnesium ion P:visual perception;P:blood coagulationbinding;F:calcium ion binding;
dd_4 F:poly(A) RNA binding; P:DNA-templated transcription, initiation
dd_5 C:ULK1-ATG13-FIP200 complex F:histone-arginine N-methyltransferase activity P:single-organism cellular process
dd_6 F:3'-5' DNA helicase activity; P:acetate-CoA ligase activity
dd_7 F:UDP-N-acetylmuramoylalanyl-D-glutamyl-2,6-diaminopimelate-D-alanyl-D-alanine ligase activity P:oxidoreductase activity, acting on the aldehyde or oxo group of donors, NAD or NADP as acceptor

我尝试使用 tidyr 在 R 中执行以下命令

separate(annot, GOs, into = c("P", "F", "C"), sep = "[a-z]+=")

但它返回了以下错误:

Error: Values not split into 3 pieces at 1, 2, 3,4

最佳答案

我认为你最好使用这样的整洁格式:

library(tidyr)
library(dplyr)
annot %>%
tbl_df() %>%
mutate(GOs = strsplit(GOs, "; ")) %>% # split each GO into a vector
unnest(GOs) %>% # unnest the vectors into multiple rows
separate(GOs, c("type", "value"), ":")
#> Source: local data frame [25 x 3]
#>
#> Name type value
#> 1 dd_1 C extracellular space
#> 2 dd_1 C cell body
#> 3 dd_1 P cell migration process
#> 4 dd_1 P NF/ß pathway
#> 5 dd_2 C Signal transduction
#> 6 dd_2 C nucleus
#> 7 dd_2 F positive regulation
#> 8 dd_2 P single organism
#> 9 dd_2 P positive(+) regulation
#> 10 dd_3 C cardiomyceltes
#> .. ... ... ...

关于regex - 使用 tidyr 从列中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com