[英]How to find the difference in time between two date/time columns from a data frame
[英]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.