[R] Extract part of a numer

David Winsemius dwinsemius at comcast.net
Tue Apr 23 21:43:02 CEST 2013


On Apr 23, 2013, at 12:13 PM, arun wrote:

> Hi,
> Try this:
> set.seed(25)
> dat1<- data.frame(ID=c(10011001,10011004,20012001,2022001,12002),val=rnorm(5),stringsAsFactors=FALSE)
> 
> dat2<- dat1
> library(stringr) 
> dat1$ID<-as.numeric(str_sub(dat1$ID,-4,-1))
>  dat1
> #    ID        val
> #1 1001 -0.2118336
> #2 1004 -1.0415911
> #3 2001 -1.1533076
> #4 2001  0.3215315
> #5 2002 -1.5001299
> 
> 
> #or
> 
>  dat2$ID<-as.numeric(gsub(".*(\\d{4})$","\\1",dat2$ID))
>  dat2
> #    ID        val
> #1 1001 -0.2118336
> #2 1004 -1.0415911
> #3 2001 -1.1533076
> #4 2001  0.3215315
> #5 2002 -1.5001299

Could also just use substr(). I wondered if offering a factor argument to either substr() or to nchar() would be a problem but they seem to apply the expected coercion:

> dat1$last4 <- substr( dat1$ID, nchar(dat1$ID)-3, nchar(dat1$ID) )
> dat1
        ID        val last4
1 10011001  0.6328586  1001
2 10011004 -0.1178190  1004
3 20012001 -1.2437550  2001
4  2022001  0.6841814  2001
5    12002 -1.3725696  2002

-- 
David.
> 
> A.K.
> 
>> Hi, 
>> 
>> How about a more complicated case (maybe simple to most of you :) )? 
>> 
>> 10011001, 10011004, 20012001, 40012034, etc., 
>> 
>> I would like to only keep the last 4 digits of each number. 
>> 
>> How should I do it? 
>> 
>> Thanks, 
>> 
>> York 
>> 
> 
>> ----- Original Message -----
>> From: arun <smartpink111 at yahoo.com>
>> To: R help <r-help at r-project.org>
>> Cc: 
>> Sent: Tuesday, April 23, 2013 12:10 PM
>> Subject: Re: Extract part of a numer 
>> 
>> Hi,
>> May be this helps:
>> set.seed(25)
>> dat1<- data.frame(ID=c("1001#01","1001#02","1001#03","1002#01","1002#02"),val=rnorm(5),stringsAsFactors=FALSE)
>  >dat1$ID<-as.numeric(gsub("#.*","",dat1$ID))
>  >dat1
>> #    ID        val
>> #1 1001 -0.2118336
>> #2 1001 -1.0415911
>> #3 1001 -1.1533076
>> #4 1002  0.3215315
>> #5 1002 -1.5001299
>> A.K.
>> 
>> 
>> Hi all, 
>> 
>> I have a database with a colume ID have the ID numbers like this1001#01, 1001#02, etc.. 
>> 
>> How could I do to just extract 1001 out? 
>> 
>> Thanks, 
>> 
>> York
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list