我有一个列,其中有AB 1997 -147,AB 1997 -150,AB 2000 -001等。如何在单独的列中提取字母“AB”和破折号“-”符号之间的4位数字?我可以使用dplyr中的separate()将ABxxxx部分与其余部分分开,但我不知道如何将数字与“AB”部分分开。谢谢。
wkyowqbh1#
如果你想保持在R的基础上,你可以用gsub删除不需要的字符串部分。
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()只是将字符串转换为整数。
strtoi()
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
2条答案
按热度按时间wkyowqbh1#
如果你想保持在R的基础上,你可以用
gsub
删除不需要的字符串部分。strtoi()
只是将字符串转换为整数。lb3vh1jj2#