Números romanos en R

25/9/2024

Temas: curiosidades

¿Sabías que R tiene un tipo de datos para números romanos? Yo tampoco.

library(dplyr)

regiones <- tibble(region = c("I Región de Tarapacá", "II Región de Antofagasta", "III Región de Atacama", 
                              "IV Región de Coquimbo", "IX Región de La Araucanía", "V Región de Valparaíso", 
                              "VI Región del Libertador General Bernardo O'Higgins", "VII Región del Maule", 
                              "VIII Región del Bío Bío", "X Región de los Lagos", "XI Región de Aysén del General Carlos Ibañez del Campo", 
                              "XII Región de Magallanes y la Antártica Chilena", "XIII Región Metropolitana", 
                              "XIV Región Los Ríos", "XV Región Arica y Parinacota", "XVI Ñuble"
))

Si extraemos la primera palabra de la variable region, obtenemos solamente el número romano.

regiones_2 <- regiones |> 
  mutate(romano = stringr::str_extract(region, "\\w+"))

regiones_2
# A tibble: 16 × 2
   region                                                 romano
   <chr>                                                  <chr> 
 1 I Región de Tarapacá                                   I     
 2 II Región de Antofagasta                               II    
 3 III Región de Atacama                                  III   
 4 IV Región de Coquimbo                                  IV    
 5 IX Región de La Araucanía                              IX    
 6 V Región de Valparaíso                                 V     
 7 VI Región del Libertador General Bernardo O'Higgins    VI    
 8 VII Región del Maule                                   VII   
 9 VIII Región del Bío Bío                                VIII  
10 X Región de los Lagos                                  X     
11 XI Región de Aysén del General Carlos Ibañez del Campo XI    
12 XII Región de Magallanes y la Antártica Chilena        XII   
13 XIII Región Metropolitana                              XIII  
14 XIV Región Los Ríos                                    XIV   
15 XV Región Arica y Parinacota                           XV    
16 XVI Ñuble                                              XVI   

Luego, convertimos le damos al número romano la clase apropiada:

regiones_3 <- regiones_2 |> 
  mutate(romano = as.roman(romano)) |> 
  relocate(romano, .before = 1)

regiones_3
# A tibble: 16 × 2
   romano  region                                                
   <roman> <chr>                                                 
 1 I       I Región de Tarapacá                                  
 2 II      II Región de Antofagasta                              
 3 III     III Región de Atacama                                 
 4 IV      IV Región de Coquimbo                                 
 5 IX      IX Región de La Araucanía                             
 6 V       V Región de Valparaíso                                
 7 VI      VI Región del Libertador General Bernardo O'Higgins   
 8 VII     VII Región del Maule                                  
 9 VIII    VIII Región del Bío Bío                               
10 X       X Región de los Lagos                                 
11 XI      XI Región de Aysén del General Carlos Ibañez del Campo
12 XII     XII Región de Magallanes y la Antártica Chilena       
13 XIII    XIII Región Metropolitana                             
14 XIV     XIV Región Los Ríos                                   
15 XV      XV Región Arica y Parinacota                          
16 XVI     XVI Ñuble                                             
class(regiones_3$romano)
[1] "roman"

Finalmente, vemos cómo resulta posible convertir desde números romanos a números arábigos; es decir, a la clase numeric en R.

regiones_2 |> 
  mutate(numero = as.numeric(romano)) |> 
  relocate(numero, .after = romano)
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `numero = as.numeric(romano)`.
Caused by warning:
! NAs introduced by coercion

# A tibble: 16 × 3
   region                                                 romano numero
   <chr>                                                  <chr>   <dbl>
 1 I Región de Tarapacá                                   I          NA
 2 II Región de Antofagasta                               II         NA
 3 III Región de Atacama                                  III        NA
 4 IV Región de Coquimbo                                  IV         NA
 5 IX Región de La Araucanía                              IX         NA
 6 V Región de Valparaíso                                 V          NA
 7 VI Región del Libertador General Bernardo O'Higgins    VI         NA
 8 VII Región del Maule                                   VII        NA
 9 VIII Región del Bío Bío                                VIII       NA
10 X Región de los Lagos                                  X          NA
11 XI Región de Aysén del General Carlos Ibañez del Campo XI         NA
12 XII Región de Magallanes y la Antártica Chilena        XII        NA
13 XIII Región Metropolitana                              XIII       NA
14 XIV Región Los Ríos                                    XIV        NA
15 XV Región Arica y Parinacota                           XV         NA
16 XVI Ñuble                                              XVI        NA
Fecha de publicación:
September 25, 2024
Extensión:
3 minute read, 575 words
Categorías:
Procesamiento de datos
Tags:
curiosidades
Ver también:
¿Arte? Nubes aleatorias en {ggplot2}
Tema morado oscuro para RStudio