繁体   English   中英

如何找到由R中的日期和时间组成的两行数据之间的差异

[英]How to find the difference between two rows of data consisting of date and time in R

我正在使用由一列日期和时间组成的数据文件作为

df
    time_stamp
1 2003-09-06T20:21:51Z  (2003-09-06--> year-month-days-hours-mintutes-seconds)
2 2003-09-06T20:22:36Z
3 2003-09-06T20:22:51Z
4 2003-09-06T20:23:06Z
5 2003-09-06T20:24:56Z
6 2003-09-06T20:25:06Z

我想根据分钟单位找到两行之间的差异。 我已经将此代码应用于1st将数据转换为日期格式,但它给了我一个错误,例如:

 x<-as.Date(df,format='%d/%b/%Y:%H:%M:%S')
 Error in as.Date.default(datew, format = "%d/%b/%Y:%H:%M:%S") : 
  do not know how to convert 'datew' to class “Date”

而mode(df)显示“列表”的结果

任何帮助将不胜感激。 我的输出应如下所示:

 df
    time_stamp                   time_duration
1 2003-09-06T20:21:51Z              0
2 2003-09-06T20:22:36Z              1
3 2003-09-06T20:22:51Z              0.25  
4 2003-09-06T20:23:06Z              0.25
5 2003-09-06T20:24:56Z              1.8
6 2003-09-06T20:25:06Z              0.17

提前致谢。

您似乎正在将列表传递给as.Date函数,但它不知道如何处理列表。 尝试以下方法。

首先,我创建您的数据

time_stamp <- 
c(
 "2003-09-06T20:21:51Z",             
 "2003-09-06T20:22:36Z",             
 "2003-09-06T20:22:51Z",             
 "2003-09-06T20:23:06Z",             
 "2003-09-06T20:24:56Z",             
 "2003-09-06T20:25:06Z")

df <- list(time_stamp=time_stamp)

现在我们将其转换为POSIX日期。 请注意,我的format="%Y-%m-%dT%H:%M:%SZ"参数与您的不同,因为您在尝试时产生了错误。 format必须反映日期字符串的性质。 有关详细信息,请参见help(strptime)

x<-as.POSIXct(df$time_stamp,format="%Y-%m-%dT%H:%M:%SZ" , tz="GMT")

# Do the comparison as @akrun suggested
time_duration <- difftime(x[-1], x[-length(x)], unit='mins')
# Add a zero to the start 
time_duration <- c(0 , time_duration)

# Make your dataframe
df <- data.frame( time_stamp=df$time_stamp , time_duration=time_duration ) 

结果就是您想要的:

> df
            time_stamp time_duration
1 2003-09-06T20:21:51Z     0.0000000
2 2003-09-06T20:22:36Z     0.7500000
3 2003-09-06T20:22:51Z     0.2500000
4 2003-09-06T20:23:06Z     0.2500000
5 2003-09-06T20:24:56Z     1.8333333
6 2003-09-06T20:25:06Z     0.1666667

暂无
暂无

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

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