r语言 - 从带有文本和数字的列中提取编号



我有一个数据框架列,看起来像这样:

Chr1Chr14Chr19Chr2Chr8Chr7

我想创建一个新的列,看起来如下:11419287

我试过这段代码,但它不适合我:新的CHR_1 & lt;美元——substr(老杆使用美元,4,4)%祝辞% as.integer

您可以使用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

请在下面找到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包(v2.0.1)在2018-10-13上创建

最新更新