【问题标题】:How to convert the date format is %y%m%d to %Y%m%d in R [duplicate]如何在R中将日期格式从%y%m%d转换为%Y%m%d [重复]
【发布时间】:2012-07-21 20:34:36
【问题描述】:

可能重复:
how to convert y%m%d%H format into “%Y%m%d %H:%M:%S” in time series data

如何在 R 数据帧中将日期格式为 %y%m%d(000101=20000101) 转换为 %Y%m%d(20000101)(

【问题讨论】:

  • 将来如果包含一个更清晰的示例会更好,但您确实包含了起始值 (000101) 以及结果应该是什么样子。谢谢你:)
  • 我认为不是完全重复——只是密切相关。
  • @BenBolker。恕我直言,它已经足够接近骗子了,OP应该编辑另一个问题而不是创建一个新问题。 -1
  • 嗨!欢迎来到 StackOverflow!为避免对您以后可能提出的任何问题产生类似的负面反应,我强烈建议您阅读this question 关于如何写一个关于 R 的好问题,并确保在未来遵循它的建议。
  • @GSee 是的,他们非常接近。

标签: r datetime time-series


【解决方案1】:

这相当容易。我将假设目前,您的日期存储为字符串,如变量 x 中。

x <- "000101"

首先,您可以将其转换为日期类。完成后,R 将日期存储为自起源以来的天数。这意味着它实际上是下面的数字。但是,特殊的打印和显示方法在打印时显示比基础数字更漂亮的输出。通过添加()转换为日期并强制打印:

(xd <- as.Date(x, format = "%y%m%d"))
[1] "2000-01-01"

现在,如果您想以某种非默认方式显示它(例如 %Y%m%d),您可以要求R 以这种方式对其进行格式化。

format(xd, "%Y%m%d")
[1] "20000101"

如果您愿意,您可以将结果保存回您的数据框中。

(myx <- format(xd, "%Y%m%d"))
[1] "20000101"

请注意,结果将再次是字符(字符串)类,不是日期类。这意味着(除其他外)您不能再进行加法或减法等。例如:

xd + 10
[1] "2000-01-11"
xd - 10
[1] "1999-12-22"

但是

myx - 10
Error in myx - 10 : non-numeric argument to binary operator

【讨论】:

  • @BenBolker 编辑以显示我的意思的示例。抱歉没有说得更清楚。
  • 我只是让你在拼写方面遇到困难。 (在非英语母语人士中,“减去”是一个非常常见的错误——从来没有足够注意了解它是否特定于特定语言)
  • 哎呀。现在修好了。说我是母语为英语的人(某种程度上)有点尴尬。
  • 我想通了。无论如何,我只是在开玩笑(但有点过于电报了)。
  • 减去:从拉丁文sub-traere,所以 s 不应该在那里。可悲的是,它有法语和西班牙语(但不是意大利语或葡萄牙语)。太烦人了。
猜你喜欢
  • 2023-03-08
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
相关资源
最近更新 更多