2017-09-13 12 views
1

Tidyverse에는 멋진 Readr이 있으며 parse_date, parse_*, parse_factorguess_parser과 같이 다양한 구문 분석 명령이 있습니다. 나는 로마 숫자의 측면에서 다음과 같은 사용자 정의 month-year 형식이되도록Tidyverse를 사용하여 로마 숫자로 사용자 정의 날짜와 달을 파싱 하시겠습니까?

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

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

경우 1 월 I 스탠드, II 2 월 스탠드 및 그래서 아무. 예를 들어 II/90February 1990을 나타냅니다. guess_parser은 월 단위의 의미가 잘못되었다고 추측합니다. 아마도 파서가 이것을 이해할 수 있도록 몇 달을 정의 할 수있는 도구가 있을까요?

일부 Tidyverse 패키지에는 로마 숫자와 같은 사용자 정의 날짜를 읽을 수있는 도구가 있습니까?

답변

1

더 깔끔한 해결책이 있어야하지만,이 하나의 작품 : 회전을

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

utils에서 사용 as.roman 클래스 roman에 객체를 변환하는

:

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 

아니면 단순히이 작업을 수행 할 수 있습니다 이 객체를 숫자 문자열로 변환하고 basemonth.abb에서 달을 추출합니다.