根据字符串中的字符数将数据帧字符串列拆分为多个不同的列

问题描述 投票:0回答:2

我试图根据字符串的前三个字符将字符串列拆分为两个单独的列,但我似乎找不到我理解的答案。我是处理字符串的新手,所以这可能是问题所在。

这是我的 df:

c(“CBR118”,“CBR52”,“CBR77”,“CBR77”,“CBR99”,“CBR7”,“CBR7”)

我试图将“CBR”与尾随数字分开,并将它们添加到 df.txt 中的新列中。 CBR 保持不变,尾随数字从 1 到 3 个字符变化。我尝试过

stringr
包和
separate_wider_position
包中的
tidyr
,但我似乎无法获取它。

任何帮助将不胜感激。

r dataframe split tidyr stringr
2个回答
0
投票

使用

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

0
投票
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
作为对数字中可能存在的最大位数的猜测。如果你可能有更多的数字,你可以把它调大。

© www.soinside.com 2019 - 2024. All rights reserved.