我有一个简单的数据集,它有一个日期列和一个值列。我注意到日期有时以mmddyy(%m /%d /%y)格式表示,其他时间以mmddYYYY(%m /%d /%Y)格式表示。标准化日期的最佳方法是什么,以便我可以进行其他计算而不会出现格式化问题?
我尝试了这里提供的答案 Changing date format in R
在这里 How to change multiple Date formats in same column
这些都无法解决问题。
以下是数据样本
Date, Market
12/17/09,1.703
12/18/09,1.700
12/21/09,1.700
12/22/09,1.590
12/23/2009,1.568
12/24/2009,1.520
12/28/2009,1.500
12/29/2009,1.450
12/30/2009,1.450
12/31/2009,1.450
1/4/2010,1.440
当我使用类似的东西将其读入新的载体时
dt <- as.Date(inp$Date, format="%m/%d/%y")
我得到以上段的以下输出
dt Market
2009-12-17 1.703
2009-12-18 1.700
2009-12-21 1.700
2009-12-22 1.590
2020-12-23 1.568
2020-12-24 1.520
2020-12-28 1.500
2020-12-29 1.450
2020-12-30 1.450
2020-12-31 1.450
2020-01-04 1.440
正如您所看到的,由于格式的变化,我们在12/23从2009年跳到2020年。任何帮助表示赞赏。感谢。
答案 0 :(得分:4)
> dat$Date <- gsub("[0-9]{2}([0-9]{2})$", "\\1", dat$Date)
> dat$Date <- as.Date(dat$Date, format = "%m/%d/%y")
> dat
Date Market
# 1 2009-12-17 1.703
# 2 2009-12-18 1.700
# 3 2009-12-21 1.700
# 4 2009-12-22 1.590
# 5 2009-12-23 1.568
# 6 2009-12-24 1.520
# 7 2009-12-28 1.500
# 8 2009-12-29 1.450
# 9 2009-12-30 1.450
# 10 2009-12-31 1.450
# 11 2010-01-04 1.440