我在R工作。我的数据集有一列时间(hh:mm:ss)。该列列为因子。
最终,我希望能够在此列中的值之间获取diff()(即,同一列中time1和time2之间的差异)。我无法用因素做到这一点。
如何将时间转换为另一种形式,以便我可以计算同一列中的时间差异? 任何帮助都会非常感激!!
答案 0 :(得分:0)
试试这段代码:
library(lubridate)
library(dplyr)
id <- c(1,2,3,4)
time1 <- hms(factor(c("09:00:01","04:02:50","10:30:21","11:15:25")))
time2 <- hms(factor(c("00:00:01","01:02:00","09:30:11","14:15:25")))
df<-data.frame(id, time1, time2)
df %>%
group_by(id) %>%
summarize(t_diff = time1 - time2)
t_diff
1 9H 0M 0S
2 3H 0M 50S
3 1H 0M 10S
4 -3H 0M 0S
答案 1 :(得分:-1)
采取你的建议:
x <- factor(c("12:34:56", "12:35:45", "12:48:00"))
y <- factor(c("12:42:56", "13:22:41", "17:11:21"))
## convert to time
x <- strptime(x, format = "%H:%M:%S")
y <- strptime(y, format = "%H:%M:%S")
## now you want a vector of differences
difftime(y,x, units="hours")
Time differences in hours
[1] 0.1333333 0.7822222 4.3891667
编辑:我误解了你的问题。您希望在一列中存在差异。请记住,您最终会得到fencepost problem,因为您的输出的行数比列少一行。尝试
diff.difftime(x)
Time differences in seconds
[1] 49 735