r - dplyr group_by 的数据表版本
问题描述
我有一个dplyr
group_by 版本,我尝试将一个名为 ratio 的列切割成不同的范围。它工作正常。dplyr
由于托管 R 工作室(由普通管理员管理),我无法更新到新版本。有没有办法将相同的逻辑重写为data.table
方式
output <- output %>%
group_by(start = as.IDate(timestamp),VAV = van_d, conditions = cut(output$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"))) %>%
summarise(duration = n()) %>%
ungroup %>%
na.omit
解决方案
,data.table
一般用法是
dt[i, j, by]
wherei
是对行进行子集化的索引,即它可以采用数字或逻辑表达式,j
- 用于列和by
分组。此用法仅适用于data.table
对象。因此,如果输入数据集是data.frame
or tibble
,则转换为data.table
with as.data.table
(不会更改原始对象)或 with (通过引用setDT
转换为)。data.table
现在,我们指定i
,j
和by
。在dplyr
代码中,没有filter
ing 即我们不需要指定i
- 所以它保持空白。代码将group_by
进入by
. 它可以是 alist
或 syntax .(
,那么j
forsummarise
也可以是list
( .(duration = .N)
)。.N
类似于n()
from _dplyr
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"))]
推荐阅读
- linux - sed匹配N次
- r - cbind 大型数据框中的参数
- javascript - 无法在渲染方法中映射来自 JSON 的数据,模拟器上的屏幕为空
- reactjs - 快速服务器路由问题 - 不允许其他路由仅本地路由工作
- c# - How to read and deserialize IEnumerable of objects with httpclient
- python - Python/Spyder:有没有办法在调试过程中抑制位置输出?
- c# - c# Linq读取xml字符串
- c# - 单击带有大图像的 PictureBox
- functional-programming - 在不使用库的情况下创建一个简单的 PNG
- android - 为什么按钮在 LinearLayout 中没有相同的基线