[R] reexpr transform nonumeric values to numeric

PIKAL Petr petr.pikal at precheza.cz
Tue Aug 21 12:16:27 CEST 2012


Dear all

I have got this kind of data

temp <- structure(c(1L, 1L, 1L, 1L, 1L, 16L, 6L, 6L, 16L, 16L, 16L, 16L, 
16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 11L, 10L, 16L, 16L, 
16L, 21L, 16L, 16L, 16L, 1L, 1L, 1L, 16L, 16L, 16L, 16L, 1L, 
1L, 7L, 3L, 1L, 1L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 4L, 10L, 8L, 
2L, 1L, 4L, 6L, 2L, 1L, 1L, 1L, 9L, 4L, 10L, 1L, 1L, 1L, 1L, 
1L, 1L, 6L, 4L, 6L, 6L, 8L, 8L, 6L, 6L, 6L, 10L, 11L, 1L, 1L, 
2L, 4L, 2L, 7L, 10L, 2L, 16L, 10L, 6L, 10L, 1L, 4L, 3L, 17L, 
1L, 2L, 1L, 1L, 2L, 1L, 2L, 3L, 2L, 6L, 8L, 4L, 1L, 1L, 8L, 8L, 
6L, 3L, 4L, 8L, 6L, 4L, 2L, 6L, 2L, 4L, 6L, 4L, 4L, 2L, 6L, 4L, 
2L, 3L, 4L, 6L, 8L, 8L, 10L, 6L, 4L, 10L, 4L, 4L, 4L, 2L, 4L, 
4L, 2L, 8L, 10L, 11L, 11L, 10L, 1L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 13L, 13L, 14L, 8L, 3L, 5L, 3L, 3L, 1L, 1L, 1L, 1L, 4L, 
1L, 12L, 16L, 26L, 16L, 1L, 1L, 1L, 1L, 16L, 16L, 16L, 16L, 16L, 
16L, 16L, 14L, 15L, 15L, 18L, 23L, 20L, 17L, 20L, 19L, 24L, 24L, 
24L, 23L, 20L, 17L, 17L, 17L, 27L, 17L, 17L, 22L, 17L, 17L, 24L, 
22L, 22L, 19L, 23L, 23L, 25L, 5L, 28L), .Label = c("0.0000", 
"0.0100", "0.0100-", "0.0200", "0.0200-", "0.0300", "0.0300-", 
"0.0400", "0.0400-", "0.0500", "0.0600", "0.0600-", "0.0700", 
"0.0800", "0.0900", "0.1000", "0.1000-", "0.1100", "0.1100-", 
"0.1200-", "0.1300", "0.1300-", "0.1400-", "0.1500-", "0.1800-", 
"0.2000", "0.2000-", "0.4000-"), class = "factor")

As you can see, negative values have minus sign at the end of value (strange but sometimes used).

I can find those values by
grep("-",levels(temp)) and manipulate it to strip "-" sign, put "-"sign before the value by paste and change it to numeric
as.numeric(paste("-", gsub("-", "", levels(temp)[grep("-",levels(temp))]), sep=""))

but Is there any kind of possible regular expression to do it in one step? E.g. I would like to end with some function which can take whole vector temp and change it to numeric.

Something like

as.numeric(gsub("some clever regular expression", temp))

Thank you
Petr



More information about the R-help mailing list