楼主: whjwin
35484 16

[问答] 【求助】提取字符中的数字 [推广有奖]

11
SAS过儿 发表于 2016-3-29 16:59:22
gaoyun2879 发表于 2015-3-4 18:41
安装一下stringr这个包,做字符串处理的,然后把需要提取的字符串->x
用下面的函数中正则表达式就可以匹配 ...
您好,想请问一下若是被空格隔开的不定长度的数字例如
x<-c("2011 1 5","2013 11 23","2012 3 23")
想把年份,月份,日期分别提取出来各做一个向量,该怎么操作呢?
非常感谢

12
hduzqq 发表于 2016-3-29 18:13:07
> x<-c("2011 1 5","2013 11 23","2012 3 23")
> y <- as.numeric(unlist(strsplit(x," ")))
> dim(y) <- c(3,3)
> y
     [,1] [,2] [,3]
[1,] 2011 2013 2012
[2,]    1   11    3
[3,]    5   23   23

13
hduzqq 发表于 2016-3-29 18:13:37
SAS过儿 发表于 2016-3-29 16:59
您好,想请问一下若是被空格隔开的不定长度的数字例如
x
> x<-c("2011 1 5","2013 11 23","2012 3 23")
> y <- as.numeric(unlist(strsplit(x," ")))
> dim(y) <- c(3,3)
> y
     [,1] [,2] [,3]
[1,] 2011 2013 2012
[2,]    1   11    3
[3,]    5   23   23

14
SSiii 发表于 2016-5-23 01:02:53
请问,比如说
[1] "6-10"  "6-4"  "6-1"  "6-5"  "6-5"  "6-3"  "6-3"  "6-6"  "6-1"  "6-0"  "6-2"
我要前一个数加上后一个数乘2,应该怎么表示出来呢?(就是6+10*2)

15
982288920@ 发表于 2016-12-5 10:15:34
你提取完之后小数点还在吗?为啥我提完只有数字没有小数点了啊

16
来一碗大太阳 发表于 2017-11-25 14:06:56
jiangbeilu 发表于 2015-12-9 16:50
用这个就可以了,还是stringr包里的函数,
你好,同样的问题,只想取123abc234后面的数字234,怎么办呢?

17
tongjixue2005 发表于 2020-6-6 18:36:54
来一碗大太阳 发表于 2017-11-25 14:06
你好,同样的问题,只想取123abc234后面的数字234,怎么办呢?
library(stringr)
  x="123abc234"

##提取前面 数值
as.numeric(str_extract(x, "\\d+"))
as.numeric(str_sub(x,1,3))

>   x="123abc234"
>
> ##提取前面 数值
> as.numeric(str_extract(x, "\\d+"))
> as.numeric(str_sub(x,1,3))
[1] 123
>
> ##提取后面 数值
> as.numeric(str_sub(x,-3,-1))
[1] 234

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 02:56