使用 Tidyverse 解析罗马数字中的自定义日期和月份?
Parsing custom Dates and Months in Roman Numerals with Tidyverse?
Tidyverse 有很棒的 Readr,它有各种各样的解析命令,例如 parse_date
、parse_*
、parse_factor
和 guess_parser
。我有一个自定义的 month-year
格式,如下所示,就罗马数字而言,
> emptyOffices$Month
[1] " II/90" " I/91" " II/91" " I/92" " II/92" " I/93" " II/93"
> guess_parser(emptyOffices$Month)
[1] "character"
其中 I
代表一月,II
代表二月等等。例如,II/90
代表 February 1990
。 guess_parser
猜错了月年的意思。也许,有一个工具可以定义月份来帮助解析器理解这一点?
Tidyverse 包中是否有一些工具可以像罗马数字一样读取自定义日期?
必须有更好的整洁解决方案,但这个有效:
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
或者您可以简单地这样做:
foo %>%
gsub("/.*", "", .) %>%
as.roman() %>%
as.numeric() %>%
month.abb[.]
使用as.roman
from utils
将object转换为class roman
,将此object转换为数字字符串并从base
[=16]中提取月份=].
Tidyverse 有很棒的 Readr,它有各种各样的解析命令,例如 parse_date
、parse_*
、parse_factor
和 guess_parser
。我有一个自定义的 month-year
格式,如下所示,就罗马数字而言,
> emptyOffices$Month
[1] " II/90" " I/91" " II/91" " I/92" " II/92" " I/93" " II/93"
> guess_parser(emptyOffices$Month)
[1] "character"
其中 I
代表一月,II
代表二月等等。例如,II/90
代表 February 1990
。 guess_parser
猜错了月年的意思。也许,有一个工具可以定义月份来帮助解析器理解这一点?
Tidyverse 包中是否有一些工具可以像罗马数字一样读取自定义日期?
必须有更好的整洁解决方案,但这个有效:
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
或者您可以简单地这样做:
foo %>%
gsub("/.*", "", .) %>%
as.roman() %>%
as.numeric() %>%
month.abb[.]
使用as.roman
from utils
将object转换为class roman
,将此object转换为数字字符串并从base
[=16]中提取月份=].