我正在尝试使用 anytime()
在 R 中转换日期和时间字符串功能。该字符串的格式为“日期-月份-年时-分-秒”。看来anytime()
该功能在某些情况下不起作用,如下例所示。
library(lubridate)
x1<-"03-01-2019 01:00:00"
x2<-"23-01-2019 17:00:00"
anytime(x1)
[1] "2019-03-01 01:00:00 CET"
anytime(x2)
[1] NA
我正在想办法解决这个问题。感谢您的帮助:)
最佳答案
您可以使用addFormats()
将特定格式添加到anytime()
已知并使用的堆栈中(和/或anydate()
)
> library(anytime)
> addFormats("%d-%m-%Y %H:%M:%S")
> anytime(c("03-01-2019 01:00:00", "23-01-2019 17:00:00"))
[1] "2019-01-03 01:00:00 CST" "2019-01-23 17:00:00 CST"
>
正如本网站之前多次解释的那样,xx-yy
符号是含糊不清的,并且在世界不同地区有不同的解释。
所以anytime
通过用作分隔符来引导:/
在北美更常见,因此我们使用“mm/dd/yyy”。另一方面,连字符在欧洲更常见,因此“dd-mm-yyyy”以这种方式开头。您可以使用getFormats()
查看 anytime()
中的格式。在新的 session 中:
> head(getFormats(), 12) ## abbreviated for display here
[1] "%Y-%m-%d %H:%M:%S%f" "%Y-%m-%e %H:%M:%S%f" "%Y-%m-%d %H%M%S%f"
[4] "%Y-%m-%e %H%M%S%f" "%Y/%m/%d %H:%M:%S%f" "%Y/%m/%e %H:%M:%S%f"
[7] "%Y%m%d %H%M%S%f" "%Y%m%d %H:%M:%S%f" "%m/%d/%Y %H:%M:%S%f"
[10] "%m/%e/%Y %H:%M:%S%f" "%m-%d-%Y %H:%M:%S%f" "%m-%e-%Y %H:%M:%S%f"
>
您可以在没有 head()
的情况下使用它查看全部。
关于r - 在R中使用anytime()函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75496804/