Мы можем использовать parse_number
из readr
library(readr)
library(dplyr)
shap_long2_seq_smpl %>%
mutate(rfvalue = parse_number(variable),
variable = str_remove(variable, "\\d+$"))
Или, если это всегда 'seq', тогда использовать substring
shap_long2_seq_smpl %>%
mutate(rfvalue = substring(variable, 4),
variable = substring(variable, 1, 3))
Или с separate
library(tidyr)
shap_long2_seq_smpl %>%
separate(variable, into = c('variable', 'rfvalue'),
sep = "(?<=[A-Za-z])(?=[0-9])", convert = TRUE)
Или с tstrsplit
в data.table
library(data.table)
shap_long2_seq_smpl[, variable := as.character(variable)
][, c('variable', 'rfvalue') := tstrsplit(variable,
"(?<=[A-Za-z])(?=[0-9])")]
В base R
, мы можем использовать strsplit
shap_long2_seq_smpl[c('variable', 'rfvalue')] <- do.call(rbind,
strsplit(as.character(shap_long2_seq_smpl),
"(?<=[A-Za-z])(?=[0-9])", perl = TRUE))