Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 从具有多个数字的数字中拆分字符_String_R - Fatal编程技术网

String 从具有多个数字的数字中拆分字符

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

我在数据框中有一列,其中的值是字母-数字组合,如G1、K8、A132等。我希望将字母从数字中拆分,但将数字保留为单个数字。我一直在使用strsplit,但这给出了一个如下所示的值列表,其中我希望有
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