2017-09-13 2 views
1

Tidyverse a le fabuleux Readr et il a une grande variété de commandes d'analyse, telles que parse_date, parse_*, parse_factor et guess_parser. J'ai un format personnalisé month-year comme ci-dessous en termes de chiffres romains tels queAnalyse des dates personnalisées et des mois en chiffres romains avec Tidyverse?

> emptyOffices$Month 
[1] " II/90" " I/91" " II/91" " I/92" " II/92" " I/93" " II/93" 

> guess_parser(emptyOffices$Month) 
[1] "character" 

I représente Janvier, II représente Février et donc pas. Par exemple, II/90 signifie February 1990. Le guess_parser devinez la signification de l'erreur mois-année. Peut-être, il y a un outil par lequel je peux définir des mois pour aider l'analyseur à comprendre cela?

Existe-t-il un outil dans un paquet Tidyverse pour lire des dates personnalisées comme avec des chiffres romains?

Répondre

1

Il doit y avoir une meilleure solution bien rangé, mais celui-ci fonctionne:

library(dplyr) 
foo <- c("II/90", "I/91", "II/91", "I/92", "II/92", "I/93", "II/93")  
foo %>% 
    tibble() %>% 
    mutate(year  = gsub(".*/", "", .), 
      monthRom = as.roman(gsub("/.*", "", .))) %>% 
    mutate(monthNum = as.numeric(monthRom)) %>% 
    mutate(monthChr = month.abb[monthNum]) 
# A tibble: 7 x 5 
     . year monthRom monthNum monthChr 
    <chr> <chr> <chr> <dbl> <chr> 
1 II/90 90  II  2  Feb 
2 I/91 91  I  1  Jan 
3 II/91 91  II  2  Feb 
4 I/92 92  I  1  Jan 
5 II/92 92  II  2  Feb 
6 I/93 93  I  1  Jan 
7 II/93 93  II  2  Feb 

Ou vous pouvez simplement faire ceci:

foo %>% 
    gsub("/.*", "", .) %>% 
    as.roman() %>% 
    as.numeric() %>% 
    month.abb[.] 

Utilisez as.roman de utils pour transformer l'objet en classe roman, tour cet objet en chaîne numérique et extraire le mois de basemonth.abb.