[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