【问题标题】:transform date format in R to POSIXt format [duplicate]将 R 中的日期格式转换为 POSIXt 格式
【发布时间】:2020-08-15 11:42:15
【问题描述】:

我正在尝试使用 R 中的“airGRTeaching”包。它旨在使用一些数学方程和输入变量(P 和 E)将模拟流“Qs”拟合到观察到的“Q”。

我已经准备好我的输入文件,其中包含一个名为“jour”的列,该列引用日期。这是名为 Book1.CSV 的表格文件的样子

        jour    P     E     Q
1    1-1-1991 13.0 2.464 0.072
2    1-2-1991 15.6 1.799 0.068
3    1-3-1991 13.6 1.379 0.150
4    1-4-1991  0.0 1.628 0.605
5    1-5-1991  7.8 2.000 0.535
6    1-6-1991 15.2 1.606 0.367
7    1-7-1991  1.3 1.812 1.153
8    1-8-1991  0.0 2.222 1.768
9    1-9-1991  0.3 2.700 0.999
10  1-10-1991  0.0 2.354 0.695

根据要求,数据文件应为 date.frame 格式,因此我使用以下行进行了转换:

> mydata<-read.csv("C:\\Users\\AcER PREDATOR\\Desktop\\Book1.CSV", header=TRUE)
> df<-data.frame(mydata)

现在我想将日期列(jour)转换为“POSIXt”格式的 UTC 时区。所以,我尝试了:

> DATE<- as.POSIXlt(df[1], tz="UTC", format= c("%Y-%m-%D %H:%M/%OS"), optional = FALSE)

但我收到此错误消息:

Error in as.POSIXlt.default(df[1], tz = "UTC", format = c("%Y-%m-%D %H:%M/%OS"),  : 
  do not know how to convert 'df[1]' to class “POSIXlt”

关于如何解决此问题的任何建议都是值得赞赏的。谢谢

【问题讨论】:

  • 看看你的jour,它看起来不像"%Y-%m-%D %H:%M/%OS"。我希望像"%m-%d-%Y"(没有时间组件)这样的东西。
  • ...但该错误看起来像您的第一列是factor 而不是character。考虑as.POSIXlt(as.character(df[1]), format="%m-%d-%Y")

标签: r date datetime time date-conversion


【解决方案1】:

使用lubridate中的parse_date_time函数可以获得:

library(lubridate)

Date <- parse_date_time(df$jour, orders = "%m-%d-%Y", tz = "UTC")

 [1] "1991-01-01 UTC" "1991-01-02 UTC" "1991-01-03 UTC" "1991-01-04 UTC" "1991-01-05 UTC" "1991-01-06 UTC" "1991-01-07 UTC"
 [8] "1991-01-08 UTC" "1991-01-09 UTC" "1991-01-10 UTC"

它回答了你的问题吗?

【讨论】:

  • 是的,它确实有效,尽管我需要降级到 R 3.6.3 以支持“lubridate”包。感谢您对 dc37 的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 2020-11-23
  • 2021-12-19
  • 2021-04-21
  • 1970-01-01
  • 2020-04-30
相关资源
最近更新 更多