我试图根据字符串的前三个字符将字符串列拆分为两个单独的列,但我似乎找不到我理解的答案。我是处理字符串的新手,所以这可能是问题所在。
这是我的 df:
c(“CBR118”,“CBR52”,“CBR77”,“CBR77”,“CBR99”,“CBR7”,“CBR7”)
我试图将“CBR”与尾随数字分开,并将它们添加到 df.txt 中的新列中。 CBR 保持不变,尾随数字从 1 到 3 个字符变化。我尝试过
stringr
包和 separate_wider_position
包中的 tidyr
,但我似乎无法获取它。
任何帮助将不胜感激。
使用
tidyr::separate_wider_regex
你可以这样做:
df <- data.frame(
x = c("CBR118", "CBR52", "CBR77", "CBR77", "CBR99", "CBR7", "CBR7")
)
library(tidyr)
df |>
separate_wider_regex(
x,
patterns = c("prefix" = "^CBR", "id" = "\\d+$")
)
#> # A tibble: 7 × 2
#> prefix id
#> <chr> <chr>
#> 1 CBR 118
#> 2 CBR 52
#> 3 CBR 77
#> 4 CBR 77
#> 5 CBR 99
#> 6 CBR 7
#> 7 CBR 7
data.frame(col_name = c("CBR118", "CBR52", "CBR77", "CBR77", "CBR99", "CBR7", "CBR7")) |>
separate_wider_position(col_name, c("cbr" = 3, "number" = 5), too_few = "align_start") |>
mutate(number = as.numeric(number))
# # A tibble: 7 × 2
# cbr number
# <chr> <dbl>
# 1 CBR 118
# 2 CBR 52
# 3 CBR 77
# 4 CBR 77
# 5 CBR 99
# 6 CBR 7
# 7 CBR 7
我选择
5
作为对数字中可能存在的最大位数的猜测。如果你可能有更多的数字,你可以把它调大。