所以我有一组这样的时间戳:
datetime<-c("2011-09-28 03:33:00", "2011-08-24 13:41:00", "2011-09-19 16:14:00", "2011-08-18 11:01:00", "2011-09-17 06:35:00", "2011-08-15 12:48:00")
Run Code Online (Sandbox Code Playgroud)
我想制作一个只有时间的直方图.我所做的是在空格处拆分列以仅获取时间,然后转换回POSIXct对象以便qplot绘制它:
library(ggplot2, stringr)
qplot(as.POSIXct(strptime((str_split_fixed(as.character(time), " ", 2)[,2]), "%H:%M:%S")))
Run Code Online (Sandbox Code Playgroud)
但是,输出as.POSIXct(strptime((str_split_fixed(as.character(datetime), " ", 2)[,2]), "%H:%M:%S"))是
"2011-10-04 03:33:00 PDT" "2011-10-04 13:41:00 PDT" "2011-10-04 16:14:00 PDT" "2011-10-04 11:01:00 PDT" "2011-10-04 06:35:00 PDT" "2011-10-04 12:48:00 PDT"
Run Code Online (Sandbox Code Playgroud)
qplot描绘了我想要的东西,但这对我来说似乎是一个令人费解的黑客.当然有更好的方法来做到这一点?我可以转换为纪元时间和情节,但我试图避免不得不这样做作为额外的一步.
更大的问题是,"我如何控制strptime的输出?"
我有一个带有开始和结束时间的数据框:
id start_time end_time
1 1 2018-09-02 11:13:00 2018-09-02 11:54:00
2 2 2018-09-02 14:34:00 2018-09-02 14:37:00
3 3 2018-09-02 03:00:00 2018-09-02 03:30:00
4 4 2018-09-02 03:49:00 2018-09-02 03:53:00
5 5 2018-09-02 07:05:00 2018-09-02 08:05:00
6 6 2018-09-02 06:44:00 2018-09-02 06:57:00
7 7 2018-09-02 06:04:00 2018-09-02 08:34:00
8 8 2018-09-02 07:51:00 2018-09-02 08:15:00
9 9 2018-09-02 08:16:00 2018-09-02 08:55:00
Run Code Online (Sandbox Code Playgroud)
从这些时间段,我如何计算每天每小时发生的总分钟数?例如,如果一个时段从 9:45 开始并在 10:15 结束,我想将 15 分钟分配给 9:00 小时,将 15 分钟分配给 10:00 小时。
或者检查06上面数据中的小时,该小时包含在两个不同的行(句点)中:
6 6 2018-09-02 06:44:00 2018-09-02 06:57:00 …Run Code Online (Sandbox Code Playgroud) 我有一些我需要在R中使用的MATLAB序列日期编号,但我要将它们转换为正常日期.
Matlab:
datestr(733038.6)
ans =
27-Dec-2006 14:24:00
Run Code Online (Sandbox Code Playgroud)
你可以看到它给出了日期和时间.
Now we try in R:
Matlab2Rdate <- function(val) as.Date(val - 1, origin = '0000-01-01')
> Matlab2Rdate(733038.6)
[1] "2006-12-27"
Run Code Online (Sandbox Code Playgroud)
它只提供日期,但我还需要时间吗?任何的想法