[R] Character (1a, 1b) to numeric

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Fri Jul 10 20:20:18 CEST 2020


Obvious is in the eye of the beholder. Presuming your letters don't go beyond "i":

a) Lookup table:

tbl <- read.table( text=
"OldCode  NewCode
1         1
1a        1.1
1b        1.2
1c        1.3
2         2
2a        2.1
2b        2.2
", as.is=TRUE, header=TRUE )

tblv <- setNames( tbl$NewCode, tbl$OldCode )
test <- c( "2", "1c", "2b" )
as.vector( tblv[ test ] )

b) String manipulation:

n <- as.integer( sub( "[a-i]$", "", test ) )
d <- match( sub( "^\\d+", "", test ), letters[1:9] )
d[ is.na( d ) ] <- 0
n + d / 10

On July 10, 2020 10:50:18 AM PDT, Jean-Louis Abitbol <abitbol using sent.com> wrote:
>Dear All
>
>I have a character vector,  representing histology stages, such as for
>example:
>xc <-  c("1", "1a", "1b", "1c", "2", "2a", "2b", "2c")
>
>and this goes on to 3, 3a etc in various order for each patient. I do
>have of course a pre-established  classification available which does
>change according to the histology criteria under assessment.
>
>I would want to convert xc, for plotting reasons, to a numeric vector
>such as
>
>xn <- c(1, 1.3, 1.5, 1.7, 2, 2.3, 2.5, 2.7)
>
>Unfortunately I have no clue on how to do that.
>
>Thanks for any help and apologies if I am missing the obvious way to do
>it.
>
>JL

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list