r - 在 data.table 中的列上,以单个“data.table”方式记录来自函数的“by = ...”-分层和非分层输出
问题描述
我正在为 data.table 的列记录 R quintile() 函数的输出,按“by = ...”分层:
require(data.table)
DT <- data.table(iris)
tab_strata <- DT[,as.list(quantile(Sepal.Length)), by = Species]
Species 0% 25% 50% 75% 100%
1: setosa 4.3 4.800 5.0 5.2 5.8
2: versicolor 4.9 5.600 5.9 6.3 7.0
3: virginica 4.9 6.225 6.5 6.9 7.9
我还想在没有“by = ...”的情况下获得相同的输出,即在整个列上计算,并将其连接到初始输出,所以我有一个如下的最终表:
tab_all <- DT[,as.list(quantile(Sepal.Length))]
tab_all <- cbind("Species" = "all", tab_all)
tab_result <- rbind(tab_all, tab_strata)
Species 0% 25% 50% 75% 100%
1: all 4.3 5.100 5.8 6.4 7.9
2: setosa 4.3 4.800 5.0 5.2 5.8
3: versicolor 4.9 5.600 5.9 6.3 7.0
4: virginica 4.9 6.225 6.5 6.9 7.9
我的问题:是否有可能以单一的“data.table”方式获得带有“all”和“by = ...”结果的tab_result?
解决方案
工具箱中鲜为人知的角落是data.table
函数cube()
和。我不是他们使用方面的专家,但他们似乎能够一步完成您正在寻找的东西:rollup()
groupingsets()
cube(DT, j = as.list(quantile(Sepal.Length)), by = "Species")
Species 0% 25% 50% 75% 100%
1: setosa 4.3 4.800 5.0 5.2 5.8
2: versicolor 4.9 5.600 5.9 6.3 7.0
3: virginica 4.9 6.225 6.5 6.9 7.9
4: <NA> 4.3 5.100 5.8 6.4 7.9
推荐阅读
- postgresql - “未找到”条件被识别为类型/变量?
- reactjs - 使用带有反应和材料 ui 的上下文 api 返回时的导航问题
- javascript - 是否可以将信息传递到定向页面时
- python - Pygame 的运行方式与不同的 python 解释器不同
- r - Tidymodels:使用 R 中的函数 tune_grid() 进行 10 倍交叉验证的可调模型
- java - 在 maven pom.xml 中更改传递依赖项的版本
- css - Flexbox 容器不包括 margin-bottom
- html - 我无法理解错误是什么?
- javascript - 有没有办法向已经初始化的指标添加新标签?
- java - 无法反序列化 `java.util.ArrayList 的实例
` 在 [Source: (BufferedInputStream); 的 START_OBJECT 标记之外 行:1,列:1]