删除dataframe列(R)中的部分字符串

Cyb*_*tic 6 r

我有一个数据帧(df)与列(Col2),如下所示:

Col1                 Col2                   Col3
  1   C607989_booboobear_Nation               A
  2   C607989_booboobear_Nation               B
  3   C607989_booboobear_Nation               C
  4   C607989_booboobear_Nation               D
  5   C607989_booboobear_Nation               E
  6   C607989_booboobear_Nation               F
Run Code Online (Sandbox Code Playgroud)

我想只提取Col2中的数字

Col1              Col2                    Col3
  1              607989                     A
  2              607989                     B
  3              607989                     C
  4              607989                     D
  5              607989                     E
  6              607989                     F
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

gsub("^.*?_","_",df$Col2)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

A5C*_*2T1 6

如果你的字符串不是太花哨/复杂,最简单的做法是:

gsub("C([0-9]+)_.*", "\\1", df$Col2)
# [1] "607989" "607989" "607989" "607989" "607989" "607989"
Run Code Online (Sandbox Code Playgroud)

以"C"开头,后跟数字,后跟下划线,然后是其他任何内容.使用捕获数字(),并将替换设置为捕获组(\\1).