【问题标题】:How to change date value in R?如何更改R中的日期值?
【发布时间】:2019-01-22 11:05:30
【问题描述】:

我有这个数据框,我只在 R 中导入了时间,它自动添加了日期,格式如下:

 horidat$CORD4
 [1] "1899-12-31 06:25:00 UTC" "1899-12-31 06:45:00 UTC" "1899-12-31 07:00:00 UTC" "1899-12-31 07:15:00 UTC"
 [5] "1899-12-31 07:30:00 UTC" "1899-12-31 07:45:00 UTC" "1899-12-31 07:57:00 UTC" "1899-12-31 08:09:00 UTC"
 [9] "1899-12-31 08:21:00 UTC" "1899-12-31 08:32:00 UTC" "1899-12-31 08:43:00 UTC" "1899-12-31 08:54:00 UTC"

我只想将日期 1899-12-31 更改为不同的日期,例如 2010-01-25。它们采用 POSIXct 格式。

如果可能的话,你能告诉我怎么做吗?

【问题讨论】:

标签: r datetime posixct


【解决方案1】:

这样就可以了(base R

paste('2010-01-25', format(as.POSIXct(horidat$CORD4), '%T'))
# [1] "2010-01-25 06:25:00" "2010-01-25 06:45:00"

# or with (local) time zone
paste('2010-01-25', format(as.POSIXct(horidat$CORD4), '%T %Z')) # or %z for digits
# [1] "2010-01-25 06:25:00 CET" "2010-01-25 06:45:00 CET" # (I'm in a different time zone)

# or keeping the class POSIXct
as.POSIXct(paste('2010-01-25', format(as.POSIXct(horidat$CORD4), '%T')))
# [1] "2010-01-25 06:25:00 CET" "2010-01-25 06:45:00 CET"

数据

horidat <- data.frame(CORD4 = c('1899-12-31 06:25:00 UTC','1899-12-31 06:45:00 UTC'), 
                      stringsAsFactors = FALSE)

【讨论】:

  • 您好,非常感谢!第一部分似乎正在工作。但我认为我不理解这部分是日期的最后一部分,这只会使 horidat 成为具有两个值的数据框,对吗?如何将过去应用到日期框架?
  • @Hanna 最后一部分 (horidat &lt;- ...) 只是一个 sample 供其他用户重现代码。 (既然你已经有了horidat的数据,就忽略第二部分)
  • 对不起,我还有一个问题,你知道我怎样才能保持 POSIXct 格式吗?这样做后它假定字符格式,我的想法是在此转换后计算与其他数据帧和列的时间差。谢谢。
  • @Hanna 只需使用 as.POSIXct - 请参阅我在答案中的编辑(方法 3)。
猜你喜欢
  • 2021-01-11
  • 1970-01-01
  • 2022-08-13
  • 2019-01-09
  • 2021-10-29
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多