dplyr group_的数据表版本,按

dplyr group_的数据表版本,按,r,dplyr,data.table,R,Dplyr,Data.table,我有一个dplyr版本的groupu,其中我尝试将一个名为ratio的列切割成不同的范围。它工作得很好。我无法将dplyr更新为新版本,因为由普通管理员管理的托管R studio。有没有办法将相同的逻辑重写为data.table方式 对于data.table,一般用法是 dt[i, j, by] 其中i是行子集的索引,即它可以采用数字或逻辑表达式,j-表示列,by表示分组。此用法仅适用于data.table对象。因此,如果输入数据集是data.frame或tibble,则使用as.data.

我有一个dplyr版本的groupu,其中我尝试将一个名为ratio的列切割成不同的范围。它工作得很好。我无法将dplyr更新为新版本,因为由普通管理员管理的托管R studio。有没有办法将相同的逻辑重写为data.table方式

对于data.table,一般用法是

 dt[i, j, by]
其中i是行子集的索引,即它可以采用数字或逻辑表达式,j-表示列,by表示分组。此用法仅适用于data.table对象。因此,如果输入数据集是data.frame或tibble,则使用as.data.table转换为data.table不会更改原始对象,或者使用通过引用转换为data.table的setDT

现在,我们指定i,j和by。在dplyr代码中,没有过滤,也就是说,我们不需要指定i-因此它保持为空。分组代码将进入分组代码。它可以是一个列表,也可以是一个语法,那么summary的j也是一个列表。.N类似于dplyr中的N

对于data.table,一般用法是

 dt[i, j, by]
其中i是行子集的索引,即它可以采用数字或逻辑表达式,j-表示列,by表示分组。此用法仅适用于data.table对象。因此,如果输入数据集是data.frame或tibble,则使用as.data.table转换为data.table不会更改原始对象,或者使用通过引用转换为data.table的setDT

现在,我们指定i,j和by。在dplyr代码中,没有过滤,也就是说,我们不需要指定i-因此它保持为空。分组代码将进入分组代码。它可以是一个列表,也可以是一个语法,那么summary的j也是一个列表。.N类似于dplyr中的N

library(data.table)
setDT(output)[, .(duration = .N), 
  by = .(start = as.IDate(timestamp),VAV =  van_d, 
    conditions = cut(ratio, breaks=c(0,0.7,0.8,0.9,1,100),
             labels=c("0-0.7","0.7-0.8","0.8-0.9","0.9-1",">1"))]