Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在data.table中创建时间间隔_R_Datetime_Time_Data.table - Fatal编程技术网

R 在data.table中创建时间间隔

R 在data.table中创建时间间隔,r,datetime,time,data.table,R,Datetime,Time,Data.table,我在大数据表中有一个datetime变量(vardt)作为字符。例如“21/07/2011 15:54:57” 我可以用DT[,newtimevar:=as.ITime(substr(DT$vardt,12,19))]将其转换为ITime类(例如15:54:57),但我想创建几组分钟,因此从21/07/2011 15:54:57我将获得15:54:00或15:54 我试过:DT[,cuttime:=as.ITime(cut(DT$vardt,breaks=“1分钟”)] 但它不起作用。我正在阅读

我在大数据表中有一个datetime变量(
vardt
)作为字符。例如
“21/07/2011 15:54:57”

我可以用
DT[,newtimevar:=as.ITime(substr(DT$vardt,12,19))]
将其转换为ITime类(例如
15:54:57
),但我想创建几组分钟,因此从
21/07/2011 15:54:57
我将获得
15:54:00
15:54

我试过:
DT[,cuttime:=as.ITime(cut(DT$vardt,breaks=“1分钟”)]

但它不起作用。我正在阅读
zoo软件包
文档,但还没有找到任何东西。对于这种情况,在大型数据表中有什么有用的想法/功能

这里有两种可能的方法:

library(data.table)
##
x <- Sys.time()+sample(seq(0,24*3600,60),101,TRUE)
x <- gsub(
  "(\\d+)\\-(\\d+)\\-(\\d+)",
  "\\3/\\2/\\1",
  x)
##
DT <- data.table(vardt=x)
##
DT[,time:=as.ITime(substr(vardt,12,19))]
##
DT[,hour_min:=as.ITime(
  gsub("(\\d+)\\:(\\d+)\\:(\\d+)",
       "\\1\\:\\2\\:00",time))]
DT[,c_hour_min:=substr(time,1,5)]
##
R>  head(DT)
                 vardt     time hour_min c_hour_min
1: 28/01/2015 05:38:30 05:38:30 05:38:00      05:38
2: 27/01/2015 14:15:30 14:15:30 14:15:00      14:15
3: 28/01/2015 06:03:30 06:03:30 06:03:00      06:03
4: 28/01/2015 00:37:30 00:37:30 00:37:00      00:37
5: 27/01/2015 17:59:30 17:59:30 17:59:00      17:59
6: 28/01/2015 03:46:30 03:46:30 03:46:00      03:46
R>  str(DT,vec.len=2)
Classes ‘data.table’ and 'data.frame':  101 obs. of  4 variables:
 $ vardt     : chr  "28/01/2015 05:38:30" "27/01/2015 14:15:30" ...
 $ time      :Class 'ITime'  int [1:101] 20310 51330 21810 2250 64770 ...
 $ hour_min  :Class 'ITime'  int [1:101] 20280 51300 21780 2220 64740 ...
 $ c_hour_min: chr  "05:38" "14:15" ...
 - attr(*, ".internal.selfref")=<externalptr>
库(data.table)
##

那么,您是在寻找仅基于分钟值的分组(例如,“15:36:03”将与“11:36:43”分组),还是基于小时和分钟值的分组(例如,“15:36:00”到“15:36:59”将全部包含在一个不包括“11:36:xx”等值的组中?@nrussell我希望按分钟分组,但11:27与15:27不同