R语言拆分含年月数据列的更简洁实现方法(可结合正则表达式)
R语言年月列拆分更简洁的实现方法
下面提供3种比原有写法更精简的实现方案,均可得到完全一致的输出结果:
方案1:优化separate参数,省略select步骤
separate函数支持用NA作为不需要保留的拆分列占位符,拆分后会自动丢弃这些列,无需额外调用select删除:
library(tidyverse) df %>% separate(month_year, c("month", NA, NA, "year"), sep = " ")
方案2:用extract函数正则匹配,稳定性更强
如果后续字符串格式出现空格数量变化的情况,用extract直接匹配目标字段的写法鲁棒性更高,直接通过正则指定要提取的月份、年份部分即可:
df %>% extract( col = month_year, into = c("month", "year"), regex = "^(\\w+) / \\w+ (\\d+)$" )
方案3:直接提取目标内容,无需拆分整列
逻辑最直观的写法,直接从原列中分别提取第一个单词作为月份、末尾的数字作为年份:
df %>% mutate( month = str_extract(month_year, "^\\w+"), year = str_extract(month_year, "\\d+$") ) %>% select(month, year)
内容的提问来源于stack exchange,提问作者symbolrush
相关产品推荐
相关产品推荐

