如何从字符串中分割日期和时间

时间:2018-03-10 16:40:34

标签: r split

我有这段代码

dtparts<-t(as.data.frame(strsplit(as.character(YOURDATA$datetime),' ')))
row.names(dtparts)=NULL

To make chron object
YOURDATA$dtime<-chron(dates=dtparts[,1], times=dtparts[,2])

但是当我在我的数据中使用时,不起作用,我不知道为什么?  **

dtparts<-t(as.data.frame(strsplit(as.character(s1$datetime),' ')))
s1$dtime<-chron(dates=dtparts[,1], times=dtparts[,2])
Error in convert.dates(dates., format = format[[1]], origin. = origin.) :   
 format m/d/y may be incorrect Además: Warning message: In
 convert.dates(dates., format = format[[1]], origin. = origin.) :   NAs
 introducidos por coerción

我真的不知道发生了什么, 请有人帮助我

1 个答案:

答案 0 :(得分:0)

解决方案可能是将as.character(s1$datetime)更改为 第一行format(s1$datetime, "%m/%d/%Y %H:%M:%S")。因此第一行将是

dtparts<-t(as.data.frame(strsplit(format(s1$datetime, "%m/%d/%Y %H:%M:%S"),' ')))

原因是date部分的格式不匹配。 date的默认chron格式为"m/d/y"as.character格式为Y-m-d格式。因此,不匹配。我们有两种方法可以解决问题:

  1. 更改代表Date部分的字符串格式,以匹配chron的期望值。这已在上面解释过。

  2. 指定函数Datechron部分的格式。这可以通过将2nd代码行转换为:

    来实现

    s1$dtime<-chron(dates=dtparts[,1], times=dtparts[,2], format = c(dates = "y/m/d", times = "h:m:s"))