R separando el número y las unidades de una columna en un marco de datos

I have a dataframe which contains a column that has numbers as well as variable units:

 num <- c(1:5)
 val <- c("5%","10K", "100.2mv","1.4g","1.007kbars")

 df <- data.frame(num,val)
 df

How can I create two new columns from df$val, one that contains just the number and one the units?

Gracias por tu ayuda.

preguntado el 28 de mayo de 14 a las 12:05

Use a regular expression. -

1 Respuestas

Aquí hay una solución usando stringr:

library(stringr)
df$extr_nums <- str_extract(val, "\\d+\\.?\\d*")
df$extr_units <- str_replace(val, nums, "")
df
  num        val extr_nums extr_units
1   1         5%         5          %
2   2        10K        10          K
3   3    100.2mv     100.2         mv
4   4       1.4g       1.4          g
5   5 1.007kbars     1.007      kbars

The regexp is translated as: "at least 1 digit, followed by optional dot, followed by optional digits".

contestado el 28 de mayo de 14 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.