gpt4 book ai didi

r - 从具有逗号分隔值的列中提取多个字符串

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

我有一个像这样的数据框:

structure(list(mut = c("Q184H/CAA-CAT", "I219V/ATC-GTC", "A314T/GCG-ACG, P373Q/CCG-CAG, A653E/GCG-GAA","0")), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"))

我想要做的是在新列中获取“/”之后的所有内容,对于每行中的每个逗号分隔值,无论每行中有多少条目。

我想要的结果是:

    mut                    nt
1 Q184H CAA-CAT
2 I219V ATC-GTC
3 A314T, P373Q, A653E GCG-ACG, CCG-CAG, CGC-GAA
4 0 0

我尝试为此使用正则表达式,但似乎无法匹配以逗号分隔的每个条目。

library(dplyr)
df %>%
mutate(nt = gsub(".+/(.*?)", "\\1", mut))

如何使每个条目都匹配?我必须将它们分开然后进行匹配吗?

最佳答案

你只需要稍微调整一下你的正则表达式;请注意我如何将您的 . 更改为 [^,]。在正则表达式中,如果将字符放在括号中并在前面加上 ^,则表示匹配除这些字符之外的任何内容。因此 [^,]+ 表示匹配尽可能多的非逗号的连续字符。

df = structure(list(mut = c("Q184H/CAA-CAT", "I219V/ATC-GTC",
"A314T/GCG-ACG, P373Q/CCG-CAG, A653E/GCG-GAA","0")),
row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"))
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df %>%
mutate(nt = gsub("[^,]+?/([^,]+?)", "\\1", mut),
mut = gsub("([^/]+)/[^,]+", "\\1", mut))
#> # A tibble: 4 x 2
#> mut nt
#> <chr> <chr>
#> 1 Q184H CAA-CAT
#> 2 I219V ATC-GTC
#> 3 A314T, P373Q, A653E GCG-ACG,CCG-CAG,GCG-GAA
#> 4 0 0

reprex package于2018年10月10日创建(v0.2.1)

关于r - 从具有逗号分隔值的列中提取多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52739671/

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