繁体   English   中英

列中时间与r之间的差异

[英]difference between columns with time in r

我有一个数据框,其中有两列有输入和输出时间,我试图在另一列中获得以秒为单位的时间差。

 ` ## intime ##     |s  ## outtime ##

 1. 6/20/2017 1:47  |s  6/20/2017 1:47
 2. 6/20/2017 3:32  |s  6/20/2017 3:32
 3. 6/20/2017 21:45 |s  6/20/2017 21:45
 4. 6/23/2017 0:15  |s 6/23/2017 0:15
 5. 6/17/2017 1:30  |s 6/17/2017 1:30`

我试过用

 `t<-c(m1$intime)
  t1<-c(m1$outime)
  dt <- as.POSIXct(t)
#Error in as.POSIXct.numeric(t) : 'origin' must be supplied
  dt <- as.POSIXct(t1)
#Error in as.POSIXct.numeric(t1) : 'origin' must be supplied`

尝试使用链接时差给出错误的代码

difftime(t2, t1) Error in as.POSIXlt.character(as.character(x), ...) : character string is not in a standard unambiguous format

不知道我哪里错了。 列是整数类型。

谢谢。

这里有几个问题。

如果您的列是整数,则as.POSIXct会将它们解释为自特定时间以来的秒数,该时间由错误引用的origin参数定义。

如果您的列是字符但不是标准格式,则必须告诉as.POSIXct如何解释字符串的不同部分。

以下是来自?as.POSIXct的示例:

as.POSIXct("2011-03-27 01:30:00", format = "%Y-%m-%d %H:%M:%S")

如果您的列实际上看起来像"6/20/2017 1:47" ,那么您应该可以使用:

as.POSIXct("6/20/2017 1:47", format = '%m/%d/%Y %H:%M')

要么

as.POSIXct(m1$intime, format = '%m/%d/%Y %H:%M')

但目前还不清楚你的列是如何整数的,仍然看起来像你发布的表。

错误表示您需要前进的一切。 as.POSIX*会给您一个错误,因为您没有标准日期格式。 检查功能?strptime 另外, 这里有一篇关于R日期的好文章

> x=c("6/20/2017 1:47")
> library(lubridate)
> y=mdy_hm(x)
> y
[1] "2017-06-20 01:47:00 UTC"

所以按照给定的数据

df1$intime=mdy_hm(df1$intime)
df1$outtime-mdy_hm(df1$outime)
df$timefidd=difftime(df1$intime,df1$outtime,units='secs')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM