R 将字符串转换为日期时间

R 将字符串转换为日期时间,r,datetime,posixct,strptime,R,Datetime,Posixct,Strptime,我试图将数据集加载到r中,并将列的类型更改为datetime strtime,as.POSIXct或as.Date适用于不同的情况 这是我的代码: a <- structure(list(DATE = c("01/01/2011 12:00:00", "01/02/2011 12:00:00", "01/03/2011 12:00:00", "01/04/2011 12:00:00", "01/05/2011 12:00:00", "01/06/2011 12:00:00"

我试图将数据集加载到r中,并将列的类型更改为datetime

strtime
as.POSIXct
as.Date
适用于不同的情况

这是我的代码:

a <- structure(list(DATE = c("01/01/2011 12:00:00", "01/02/2011 12:00:00", 
   "01/03/2011 12:00:00", "01/04/2011 12:00:00", "01/05/2011 12:00:00", 
   "01/06/2011 12:00:00"), VAL = c(65.34447917, 65.23983333, 65.03183333, 
   64.89107292, 64.83333333, 64.848625), id = c("VT1-1", "VT1-1", "VT1-1", 
   "VT1-1", "VT1-1", "VT1-1")), .Names = c("DATE", "VAL", "id"), row.names = c(NA, -6L), 
   class = c("tbl_df", "tbl", "data.frame"))

b1 <- as.POSIXct(a$DATE, format = "%m/%d/%y %H:%M:%S")
b2 <- strptime(a$DATE,"%m/%d/%Y %H:%M/%S")
a

anytime软件包就是为了简化这个过程而构建的——您不需要提供可能出错的格式,它只是尝试了一些看似合理的格式。对于“合理的”输入,它只起作用。

您有一个输入错误--您使用了
%m/%d/%y%H:%m/%S”
,末尾有一个斜杠。您需要带冒号的
“%m/%d/%y%H:%m:%S”
。但是看看我的答案。恐怕你不认为DMI标准是不合理的。对于美国的mdy标准来说,它工作正常,但我担心dmy是第二个最常用的(仅次于ymd)。它与ymd没有问题。它在2018年6月9日这样的个位数上也会失败,它需要尾随零。我认为提供格式比依赖启发式安全得多。问题是,除非作者对格式进行分类,否则您无法区分mm dd yyyy和dd mm yyyy,这确实使格式不合理,因为它容易出错。因此,优先选择ISO日期:yyyy-mm-dd。文档对此很清楚。因此,换句话说,您需要提供一种格式,即使您可能会弄错,而不是您所说的。否则,它很容易出错。与基本解决方案和一个包没有太大区别less@Slav胡说你想歪曲我的话。你费心看报纸了吗?我无法消除m/d/y与d/m/y的问题,但我确实记录了a)对ISO8601的强烈偏好和建议,以及b)声明在发生冲突的情况下使用m/d/y。故事结束了。
R> library(anytime)
R> anytime(a$DATE)
[1] "2011-01-01 12:00:00 CST" "2011-01-02 12:00:00 CST" "2011-01-03 12:00:00 CST"
[4] "2011-01-04 12:00:00 CST" "2011-01-05 12:00:00 CST" "2011-01-06 12:00:00 CST"
R>