我希望你们有个美好的夜晚。
我有一个看起来像这样的数据集:
data1
[date] [fuel_price]
[1,] 201004 3.56
[2,] 201105 3.32
[3,] 201106 3.45
[4,] 201212 3.94
[4,] 201301 3.94
日期的格式为:YYYYMM,我试图让R解释它。 到目前为止,这是我的代码:
DateNum = as.numeric(as.POSIXct(data1$date, format="%Y%m"))
PriceFun = approxfun(thedata1$fuel_price ~ DateNum)
PriceFromDate = function(x) {
round(PriceFun(x), 3) }
为什么它不适合我?
先谢谢你们。
答案 0 :(得分:1)
这是一种风险较大的方法,但您可以考虑使用anytime
包:
x <- c(201004,
201105,
201106,
2012012,
201301)
anytime::anytime(x, asUTC = TRUE)
这会给你:
[1] "2010-04-01 01:00:00 BST" "2011-05-01 01:00:00 BST" "2011-06-01 01:00:00 BST"
[4] "2012-12-01 00:00:00 GMT" "2013-01-01 00:00:00 GMT"
评论中讨论的要点是有效的,您可能首先希望得到明确的字符串,对日期格式做出有意识的假设;比如假设每个日期的一个月的第一天和承担您的转换;提供的解决方案使用您的初始字符串2012012
与拼写错误来证明任何时候都可以管理此字符串。