【问题标题】:How to convert R date() values如何转换 R date() 值
【发布时间】:2021-06-16 00:32:38
【问题描述】:

我有一个包含很多日期的日期框,这些日期是由 R 中的 date() 命令生成的,类似于下面的第一个数据框。在我使用此版本 R 的计算机上,日期值的格式类似于“Thu Mar 18 11:15:23 2021” - 我相信这都是 R 的基本内容。

我想去掉工作日、小时、分钟和秒,然后对其进行转换,使其看起来像“2021-03-18”。我的目标数据框是下面的第二个数据框。我尝试了各种 as.Date() 或 strftime 函数均无​​济于事。

df <- data.frame(date=c(date(),date()),value = c(1,2))
df <- data.frame(date =c("2021-03-18","2021-03-18"), value = c(1,2))

【问题讨论】:

  • 也许您可以使用Sys.Date() 而不是date()。另见Convert character to class Date
  • 完全同意我应该使用 Sys.Date() 而不是 date(),但现在数据已经存储,所以损坏已经造成。

标签: r date lubridate strftime


【解决方案1】:

如果不需要字符串,可以跳过 strftime 调用,只使用 as.Date

df <- data.frame(
  date=c(date(),date()),
  value = c(1,2),
  stringsAsFactors = FALSE
)

df$date <- strftime(as.Date(df$date, "%c"), "%Y-%m-%d")

https://stat.ethz.ch/R-manual/R-patched/library/base/html/strptime.html

【讨论】:

  • 这很好用! “%c”在做什么?看看你链接的文档,我觉得它好像是一个世纪,尽管它显然不是。
  • 并非如此,较低的 %c 与大写的 %C 不同。它应该是您所在地区的特定时间。忽略语言环境设置时,我有过不愉快的经历。 %c 日期和时间。输出时特定于语言环境,输入时为“%a %b %e %H:%M:%S %Y”。
猜你喜欢
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2011-04-24
  • 1970-01-01
  • 2011-06-28
  • 2019-09-05
  • 1970-01-01
相关资源
最近更新 更多