Tengo una columna de clase numérica, por ejemplo: v <- c(12345, 2345, 7689900).

Sé que cada número es en realidad de la forma 12.345, 23.45, 76.89900, es decir, cada número tiene dos dígitos y el resto son decimales.

¿Cómo puedo convertir el vector a este formato? No se debe recortar ningún decimal en el proceso.

3
spore234 22 jun. 2020 a las 11:56

3 respuestas

La mejor respuesta

Si está buscando un vector numérico, una opción podría ser:

v/10^(nchar(v) - 2)

[1] 12.345 23.450 76.899

Editar:

En los casos en que tenemos más de 20 dígitos, podemos Contar el número de dígitos enteros usando log10 :

v/10^(floor(log10(abs(v))) + 1 - 2)
3
zx8754 22 jun. 2020 a las 09:50

Usando regex podemos capturar los datos en dos grupos separados por ".".

sub('(..)(.*)', '\\1.\\2', v)
#[1] "12.345"   "23.45"    "76.89900"

Puede envolver esto en as.numeric si desea realizar alguna manipulación al respecto.

1
Ronak Shah 22 jun. 2020 a las 08:59
as.numeric(paste0(substring(v,1,2), ".", substring(v,3)))
# [1] 12.345 23.450 76.899
1
sindri_baldur 22 jun. 2020 a las 09:28