R语言 将数字从文本字符串中分离到单独的列中(它们之间没有分隔符)

0vvn1miw  于 2023-04-27  发布在  其他
关注(0)|答案(2)|浏览(151)

我有一个列,其中有AB 1997 -147,AB 1997 -150,AB 2000 -001等。如何在单独的列中提取字母“AB”和破折号“-”符号之间的4位数字?我可以使用dplyr中的separate()将ABxxxx部分与其余部分分开,但我不知道如何将数字与“AB”部分分开。谢谢。

wkyowqbh

wkyowqbh1#

如果你想保持在R的基础上,你可以用gsub删除不需要的字符串部分。

data <- data.frame(col = c("AB1997-147", "AB1997-150", "AB2000-001"))

data$newcol <- strtoi(gsub(pattern = "AB|(-[[:digit:]]+)",
                           replacement = "",
                           x = data$col)))

#         col newcol
#1 AB1997-147   1997
#2 AB1997-150   1997
#3 AB2000-001   2000

strtoi()只是将字符串转换为整数。

lb3vh1jj

lb3vh1jj2#

library(dplyr)
library(stringr)

data <- data.frame(col = c("AB1997-147", "AB1997-150", "AB2000-001"))

data %>% 
  mutate(AB_num = str_extract(col, "(?<=AB)\\d{4}"))

#         col AB_num
1 AB1997-147   1997
2 AB1997-150   1997
3 AB2000-001   2000

相关问题