【问题标题】:change date from y-m-d to m/d/y format in R [duplicate]在R中将日期从y-m-d更改为m/d/y格式[重复]
【发布时间】:2015-10-26 05:27:43
【问题描述】:

我正在尝试在 R 中将此 2008-01-01 转换为 1/1/2008。我尝试过 as.Date(abc,'%m/%d/%y'),但它不起作用......相反,我得到了一堆 NA。

有什么想法吗?

【问题讨论】:

  • 对没有研究工作投反对票。将您的确切问题标题粘贴到“提问”标题框中会列出“可能已经有您答案的问题”下的重复项
  • 我的问题实际上有点不同......而且这些解决方案也比之前列出的要快得多。我搜索了一个小时。
  • 您搜索了一个小时? “R 更改日期格式”的 Google 结果的第一页给出了与以下相同的答案,以及涵盖此材料的其他几篇 R-bloggers 文章和教程。即使在 Google 上搜索您的确切问题标题,也会得到几个具有相同信息的肯定结果。
  • 是的,我也尝试了其他方法。他们至少没有使用“gsub”方法。我看到as.Date(d,'%m/%d/%y') 仍然没有给我想要的结果。事实上,我得到了像“0001-01-20”“0001-02-20”“0001-03-20”“0001-04-20”“0001-05-20”这样的值感觉。
  • Browse[2]> head(dates1) [1] "0001-01-20" "0001-02-20" "0001-03-20" "0001-04-20" "0001-05-20" "0001-06-20" Browse[2]> okay1 <- as.Date(dates1, format="%m/%d/%y") Browse[2]> head(okay1) [1] "0001-01-20" "0001-02-20" "0001-03-20" [4] "0001-04-20" "0001-05-20" "0001-06-20" 所以即使用谷歌搜索我仍然得到一些奇怪的东西。

标签: r


【解决方案1】:

我假设 2008-01-01 是一个字符串,而您希望 1/1/2008 也是一个字符串。

您可以使用format() 执行此操作,但可能有更好的解决方案。如果您真的不希望输出中出现零(而不是 01/01/2008),那么我认为 format() 不会帮助您。

Date = "2008-01-01" 
format(as.Date(Date, '%Y-%m-%d'), "%m/%d/%Y")

【讨论】:

  • 正是我正在寻找的将 m/d/Y 日期转换为 Y-m-d
【解决方案2】:

由于您输入的日期是ISO 8601 格式,您可以直接在其上调用as.Date() 以获取一个Date-classed 对象,然后format() 可用于将其字符串化为使用格式说明符指定的任何格式记录here

d <- '2008-01-01';
format(as.Date(d),'%m/%d/%Y');
## [1] "01/01/2008"

如果您真的不想要那些前导零,则必须使用 gsub() 自己删除它们:

gsub('\\b0+','',format(as.Date(d),'%m/%d/%Y'));
## [1] "1/1/2008"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2012-07-21
    • 2018-05-25
    • 2017-11-02
    • 2021-03-09
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多