【问题标题】:identify date format in R before converting在转换之前识别 R 中的日期格式
【发布时间】:2013-12-24 02:20:04
【问题描述】:

我有一个简单的数据集,其中包含一个日期列和一个值列。我注意到日期有时以 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 年。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 如果是我,我会查看日期的长度,如果是 8 个字符,我会在第 6 和第 7 个字符位置之间插入“20”。然后我会把他们都当作更长的约会,像老板一样前进。

标签: r date


【解决方案1】:
> 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  

【讨论】:

    猜你喜欢
    • 2023-01-07
    • 1970-01-01
    • 2020-11-23
    • 2021-12-19
    • 2021-04-21
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    相关资源
    最近更新 更多