从带有文本和数字的列中提取数字

Extract number from a column with text & number

我有一个如下所示的数据框列:

Chr1 铬14 铬19 铬2 铬8 Chr7

我想创建一个如下所示的新列: 1个 14 19 2个 8个 7

我试过这段代码,但它对我不起作用: 新$CHR_1 <- substr(OLD$CHR, 4, 4) %>% as.integer

请在下面找到软件包 data.tablestringr 的解决方案。您只需要使用以下代码行:

REPREX

  • 您的数据
library(data.table)
library(stringr)

# Create your data.frame
OLD <- data.frame(CHR = c("Chr1", "Chr14", "Chr19", "Chr2", "Chr8", "Chr7"))
  • 代码
# Convert into data.table
setDT(OLD)

# Add a column "Chr_ID" containing the numbers
OLD[ , Chr_ID := lapply(.SD, str_extract,"(?<=^Chr)\d+"), .SDcols = "CHR"]
  • 输出
OLD
#>      CHR Chr_ID
#> 1:  Chr1      1
#> 2: Chr14     14
#> 3: Chr19     19
#> 4:  Chr2      2
#> 5:  Chr8      8
#> 6:  Chr7      7

reprex package (v2.0.1)

于 2021-10-13 创建

您可以使用 readr::parse_number 从列中提取数字。

OLD <- data.frame(CHR = c("Chr1", "Chr14", "Chr19", "Chr2", "Chr8", "Chr7"))
OLD$num <- readr::parse_number(OLD$CHR)
OLD

#    CHR num
#1  Chr1   1
#2 Chr14  14
#3 Chr19  19
#4  Chr2   2
#5  Chr8   8
#6  Chr7   7