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

Richard O'Keefe r@oknz @end|ng |rom gm@||@com
Sat Jul 11 09:02:11 CEST 2020


The string index approach works with any mapping from stage names
to stage numbers, not just regular ones.  For example, if we had
"1" -> 1, "1a" -> 1.4, "1b" -> 1.6
"2" -> 2, "2a" -> 2.3, "2b" -> 2.7
the 'sub' version would fail miserably while the string index
version would just work.  The 'sub' version would also not work
terribly well if the mapping were
"1" -> 1, "a1" -> 1.3, "b1" -> 1.5, "c1" -> 1.7
and so on. The thing I like about the indexing approach is that
it uses a fundamental operation of the language very directly.

Anyone using R would do well to *master* what indexing can do
for you.


On Sat, 11 Jul 2020 at 17:16, Eric Berger <ericjberger using gmail.com> wrote:

> xn <- as.numeric(sub("c",".7",sub("b",".5",sub("a",".3",xc))))
>
>
> On Sat, Jul 11, 2020 at 5:09 AM Richard O'Keefe <raoknz using gmail.com> wrote:
>
>> This can be done very simply because vectors in R can have
>> named elements, and can be indexed by strings.
>>
>> > stage <- c("1" = 1, "1a" = 1.3, "1b" = 1.5, "1c" = 1.7,
>> +            "2" = 2, "2a" = 2.3, "2b" = 2.5, "2c" = 2.7,
>> +            "3" = 3, "3a" = 3.3, "3b" = 3.5, "3c" = 3.7)
>>
>> > testdata <- rep(c("1", "1a", "1b", "1c",
>> +                   "2", "2a", "2b", "2c",
>> +                   "3", "3a", "3b", "3c"), times=c(1:6,6:1))
>>
>> > stage[testdata]
>>   1  1a  1a  1b  1b  1b  1c  1c  1c  1c   2   2   2   2   2  2a  2a  2a
>> 2a
>>  2a
>> 1.0 1.3 1.3 1.5 1.5 1.5 1.7 1.7 1.7 1.7 2.0 2.0 2.0 2.0 2.0 2.3 2.3 2.3
>> 2.3
>> 2.3
>>  2a  2b  2b  2b  2b  2b  2b  2c  2c  2c  2c  2c   3   3   3   3  3a  3a
>> 3a
>>  3b
>> 2.3 2.5 2.5 2.5 2.5 2.5 2.5 2.7 2.7 2.7 2.7 2.7 3.0 3.0 3.0 3.0 3.3 3.3
>> 3.3
>> 3.5
>>  3b  3c
>> 3.5 3.7
>>
>> On Sat, 11 Jul 2020 at 05:51, 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
>> > --
>> > Verif30042020
>> >
>> > ______________________________________________
>> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> > 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.
>> >
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.
>>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list