String 从具有多个数字的数字中拆分字符
我在数据框中有一列,其中的值是字母-数字组合,如G1、K8、A132等。我希望将字母从数字中拆分,但将数字保留为单个数字。我一直在使用strsplit,但这给出了一个如下所示的值列表,其中我希望有String 从具有多个数字的数字中拆分字符,string,r,String,R,我在数据框中有一列,其中的值是字母-数字组合,如G1、K8、A132等。我希望将字母从数字中拆分,但将数字保留为单个数字。我一直在使用strsplit,但这给出了一个如下所示的值列表,其中我希望有G和10的输出: x <- "G10" strsplit(x, "")[[1]][1] "G" strsplit(x, "")[[1]][-1] "1" "0" 有没有一种简单的方法可以将数字与字母分开?stringr软件包通常具有方便的功能: require(stringr) str_extr
G
和10
的输出:
x <- "G10"
strsplit(x, "")[[1]][1]
"G"
strsplit(x, "")[[1]][-1]
"1" "0"
有没有一种简单的方法可以将数字与字母分开?stringr软件包通常具有方便的功能:
require(stringr)
str_extract(c("A1","B2","C123"),"[[:upper:]]")
#[1] "A" "B" "C"
str_extract(c("A1","B2","C123"),"[[:digit:]]+")
#[1] "1" "2" "123"
这假设每个元素都有一个“字母”部分和一个“数字”部分,因为
stru extract
只是提取匹配的第一个实例。您可以使用gsub
删除所有非数字字符或所有数字字符,如下所示:
> x <- "A3"
> gsub("[^[:digit:]]","",x)
"3"
> gsub("[:digit:]","",x)
"A"
>x gsub(“[^[:digit:][]”,“”,x)
"3"
>gsub(“[:位:”,“”,x)
“A”
然后,如果您愿意,您可以使用
as.numeric
将字符串转换为数字。如果您的评论显示您只有一个字母后跟一个或多个数字,您可以执行类似的操作:
x <- c("G10", "X1231", "y14522")
# Just grab the first letter
letter <- substring(x, 1, 1)
letter
# [1] "G" "X" "y"
# Grab everything except the first character and convert to numeric
number <- as.numeric(substring(x, 2, nchar(x)))
number
#[1] 10 1231 14522
x格式总是一个字母后跟一个数字吗?在这种情况下,一个或多个数字前只有一个字母。您可以添加提取字母的解决方案(参见joran的答案)。事实上,可以编写一个函数来提取字母和数字,并让apply
处理data.frame列。:)@aaronjg要获得信件,您需要额外的一对[]
x <- c("G10", "X1231", "y14522")
# Just grab the first letter
letter <- substring(x, 1, 1)
letter
# [1] "G" "X" "y"
# Grab everything except the first character and convert to numeric
number <- as.numeric(substring(x, 2, nchar(x)))
number
#[1] 10 1231 14522