R:如何将值缩短为值内的一个数字
R: how to shorten a value to just one number inside the value
Chromosome_name
Start Position
CHR_HSCHR7_2_CTG6
142857940
CHR_HSCHR19LRC_PGF2_CTG3_1
54316049
我刚开始使用 R。
我有一个染色体名称的数据框,但我只想用染色体的编号替换长名称。
即 CHR_HSCHR19LRC_PGF2_CTG3_1 将是“19”
我需要用字符“HRCHR”之后的数字替换长名称
我该怎么做?
我尝试了手动输入替换值的方法:
gsub(".*HSCHR19", "19", dataframe)
但是对于超过 100 个值的列表来说,这花费的时间太长了。我想找到一种自动执行此操作的方法。
您可以使用
sub('^.*CHR(\d+).*$', '\1', Chromosome_name)
#> [1] "7" "19"
另一个可能的选项是 look-behind regex,例如
library(tidyverse)
df <- read.table(text = "Chromosome_name Start_Position
CHR_HSCHR7_2_CTG6 142857940
CHR_HSCHR19LRC_PGF2_CTG3_1 54316049", header = TRUE)
df2 <- df %>%
mutate(Chromosome_name = str_extract(Chromosome_name, "(?<=HSCHR)\d+"))
df2
#> Chromosome_name Start_Position
#> 1 7 142857940
#> 2 19 54316049
由 reprex package (v2.0.1)
创建于 2022-03-22
Chromosome_name | Start Position |
---|---|
CHR_HSCHR7_2_CTG6 | 142857940 |
CHR_HSCHR19LRC_PGF2_CTG3_1 | 54316049 |
我刚开始使用 R。 我有一个染色体名称的数据框,但我只想用染色体的编号替换长名称。 即 CHR_HSCHR19LRC_PGF2_CTG3_1 将是“19” 我需要用字符“HRCHR”之后的数字替换长名称 我该怎么做?
我尝试了手动输入替换值的方法:
gsub(".*HSCHR19", "19", dataframe)
但是对于超过 100 个值的列表来说,这花费的时间太长了。我想找到一种自动执行此操作的方法。
您可以使用
sub('^.*CHR(\d+).*$', '\1', Chromosome_name)
#> [1] "7" "19"
另一个可能的选项是 look-behind regex,例如
library(tidyverse)
df <- read.table(text = "Chromosome_name Start_Position
CHR_HSCHR7_2_CTG6 142857940
CHR_HSCHR19LRC_PGF2_CTG3_1 54316049", header = TRUE)
df2 <- df %>%
mutate(Chromosome_name = str_extract(Chromosome_name, "(?<=HSCHR)\d+"))
df2
#> Chromosome_name Start_Position
#> 1 7 142857940
#> 2 19 54316049
由 reprex package (v2.0.1)
创建于 2022-03-22