当前位置:  开发笔记 > 编程语言 > 正文

Regexp从年份开始分割月份mmyyyy

如何解决《Regexp从年份开始分割月份mmyyyy》经验,为你挑选了2个好方法。

我有一个变量,它是月份和年份的串联,以数字格式.月份的格式为1-12,而不是01-12.

我的变量看起来像:

mmyyyy
12014
22014
102014
52015
112015

我正在寻找匹配月份或年份的正则表达式:

一年,我做了类似的事情:

year <- ifelse(grepl("2014", mmyyyy), 2014, ifelse(grepl("2015", mmyyyy), 2015, 2016))

但是这个月,我正在挣扎.我的第一个想法是用空白替换2014,2015等,然后将结果转换为数字.

month <- as.numeric(gsub("[[^2014]]", "", mmyyyy))

但在这里,我找不到合适的正则表达式.

最后,我想要一个带有数字年(yyyy)的变量/向量和一个带有数字月份的变量/向量.



1> David Arenbu..:

使用tidyrwhich 的可能解决方案将在一次调用中同时创建两个monthyear列.

library(tidyr)
extract(df, mmyyyy, c("month", "year"), "(\\d+)(\\d{4})", convert = TRUE)
#   month year
# 1     1 2014
# 2     2 2014
# 3    10 2014
# 4     5 2015
# 5    11 2015

数据

df <- data.frame(mmyyyy = c(12014,
                            22014,
                            102014,
                            52015,
                            112015))



2> talat..:

一种选择是

# for the months:
> as.numeric(gsub("(.*)[0-9]{4}$", "\\1", x))
#[1]  1  2 10  5 11
# for the years:
> as.numeric(gsub(".*([0-9]{4})$", "\\1", x))
#[1] 2014 2014 2014 2015 2015

这适用于任何4位数年份.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有