【发布时间】:2021-03-01 04:20:10
【问题描述】:
我的数据的日期格式不直接可用。我有年度、季度或月经的数据。年度存储正确,季度格式为1Q2010,月度格式为JAN2010。
所以像
library(tidyverse)
library(data.table)
MWE <- data.table(date=c("JAN2020","FEB2020","1Q2020","2020"),
value=rnorm(4,2,1))
> MWE
date value
1: JAN2020 2.5886057
2: FEB2020 0.5913031
3: 1Q2020 1.6237973
4: 2020 1.4093762
我希望它们采用标准格式。我认为一种可读性强的方法是替换非标准元素,因此要有这些元素:
Date_Brute <- c("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","1Q","2Q","3Q","4Q")
被这些替换
Date_Standardisee <- c("01-01","01-02","01-03","01-04","01-05","01-06","01-07", "01-08","01-09","01-10","01-11","01-12","01-01","01-04","01-07","01-10")
现在我认为gsub 不适用于向量。我发现this answer 建议使用stingr::str_replace_all,但我无法使其在data.table 中发挥作用。
我愿意使用其他函数将向量替换为另一个向量,但希望避免例如切片数据和使用特定日期讲座函数。
期望的输出:
> MWE
date value
1: 01-01-2020 2.5886057
2: 01-02-2020 0.5913031
3: 01-01-2020 1.6237973
4: 2020 1.4093762
【问题讨论】: